Duplicitne riadky v subore

Alexandr Malusek malusek na hroch.ujf.cas.cz
Úterý Květen 23 12:29:07 CEST 2000


Peter.Mann na tuke.sk (Peter Mann) writes:

> pomocou awk a sort viem vybrat z /etc/passwd a zoradit uzivatelov podla
> mena. co vsak neviem a potrebujem: ludi s rovnakym menom dat spolu s
> loginom do ineho suboru

S Linuxem to souvisi pramalo, ale udelat se to da asi takhle:

$ sort -t: -k 5,6 /etc/passwd | awk -f dupl.awk
$ cat dupl.awk
BEGIN {
  FS = jmeno = ":";
  domena = "tuke.sk";
  soubor_s = "uzivatele.txt";
  soubor_d = "vyjimky.txt";
  dupl = 0;   # Duplicitni polozka
}

{
  split($5, ar, ",");        # Zajima nas jen pole pred carkou
  split(ar[1], jm, " ");     # Jmeno a prijmeni oddeluje mezera
  if (jm[1] == jmeno && jm[2] == prijmeni)
    {
      dupl = 1;
      printf("%s\t%s.%s@%s\n", login, jmeno, prijmeni, domena) > soubor_d;
    }
  else
    {
      if (dupl == 1)
	printf("%s\t%s.%s@%s\n", login, jmeno, prijmeni, domena) > soubor_d;
      else
	if (jmeno != ":")  # Osetri zpracovani prvniho zaznamu
	  printf("%s\t%s.%s@%s\n", login, jmeno, prijmeni, domena) > soubor_s;
      dupl = 0;
    }
  login = $1;
  jmeno = jm[1];
  prijmeni = jm[2];
}

END {    # Vypis posledni zaznam
  if (dupl == 1)
    printf("%s\t%s.%s@%s\n", login, jmeno, prijmeni, domena) > soubor_d;
  else
    printf("%s\t%s.%s@%s\n", login, jmeno, prijmeni, domena) > soubor_s;
}

Nijak zvlast jsem to netestoval, takze tam mohou byt chyby. 

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux