In awk nach werten filtern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • In awk nach werten filtern

    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

    Quellcode

    1. USERLIST=`sed -e 's/.*://' $PROACC/$PRO.acc | ${AWK} -F\, '{ for (i = 1; i <= NF; i++) print $i}' | sort -u | ${AWK} '
    2. #build array of existing accounts
    3. BEGIN {
    4. cmd = "ypcat passwd | sed 's/:.*//'"
    5. while (( cmd | getline ) > 0) {
    6. accountlis[$0] = $0
    7. }
    8. }
    9. {
    10. if ( $1 in accountlist ){
    11. printf("%s,",$1)
    12. }
    13. }
    14. '`
    Alles anzeigen


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

    Quellcode

    1. pl_aktiv:horn,veikko
    2. me_aktiv:agnes,andersso
    3. re_aktiv:bagnuoli,bonello,buckmann,eberlein,herwig,werno
    4. pl:franke,jung
    5. re:graf
    6. me:erich,farrugia,franke
    7. 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