In awk filtern

Bash, Shell, PHP, Python, Perl, CGI
chr.raible
Posts: 19
Joined: 2005-11-07 21:31

In awk filtern

Post by chr.raible » 2009-10-12 10:18

Hi @all,

ich bin gerade dabei mich in awk / sed einzulesen, doch ich sollte für meinen Arbeitgeber ein altes Script ändern, da dieses dringend benötigt wird.

Und zwar geht es um folgendes: Ich habe folgdenen Codeausschnitt

Code: Select all

    USERLIST=`sed -e 's/.*://' $PROACC/$PRO.acc | ${AWK} -F, '{ for (i = 1; i <= NF; i++) print $i}' | sort -u | ${AWK} '
#build array of existing accounts
BEGIN {
        cmd = "ypcat passwd | sed 's/:.*//'"
        while (( cmd | getline ) > 0) {
        accountlis[$0] = $0
        }
}
{
          if ( $1 in accountlist ){
                printf("%s,",$1)
          }
}
'`


Dieser generiert mir aus einer datei $PRO.acc eine Userlist. Die $PRO.acc sieht z.B. so aus:

Code: Select all

pl_aktiv:horn,veikko
me_aktiv:agnes,andersso
re_aktiv:bagnuoli,bonello,buckmann,eberlein,herwig,werno
pl:franke,jung
re:graf
me:erich,farrugia,franke
st:B


Das argument st:B ist nun neu dazugekommen und gibt den status der Daten an. Da dies aber genau so aufgebaut ist, wie z.B. me_aktiv:horn, veikko usw. wird "B" auch mit in die Userlist übernommen.

Jetzt meine Frage: Wie kann ich nach den werten st:A, st:B und st:P filtern, so dass diese nicht mit in die Userlist mitaufgenommen werden?!
Leider stehen die werte nich immer an letzter Stelle in der Datei.

Wie gesagt, bin ich noch awk / sed anfänger und bin gerade erst dabei das ganze zu lernen.

Wäre super wenn mir jemand helfen könnte.

Mfg
Chr.Raible

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: In awk filtern

Post by oxygen » 2009-10-12 10:41

grep -v "st:"