Struktur eines AWK-Skriptes

 

Wie arbeitet awk?


Ein awk-Programm besteht aus einer Folge von pattern-action statements:

awk-Programme

[BEGIN {actionBegin}]

pattern1 {action1}

pattern2 {action2}

...

patternn {actionn}

[END {actionEnd}]

Die Anweisung hinter BEGIN wird nur einmal vor dem Einlesen der ersten Zeile ausgeführt, die Anweisung hinter END nur einmal am Ende.


Abarbeitung des Programmes:

Schleife von 1 bis n:

Paßt patterni auf aktuelle Zeile?

Wenn ja, führe actioni aus


awk-Programme

Es kann entweder patterni oder actioni weggelassen werden:

{actioni}

actioni wird für jede Eingabezeile ausgeführt

patterni

Für jede Eingabezeile, auf die patterni paßt, wird die Eingabezeile an die Standardausgabe geschickt


pattern {action}

action kann aus mehreren Teilaktionen bestehen:

pattern {action1;... }
oder
pattern { 
         action1
         action2
         ..
         actionn}


Bemerkungen zur Syntax


pattern {action}


Das folgende Beispiel druckt eine etwas schöner formatierte Liste aus der /etc/passwd, wobei nur Benutzer aufgeführt werden, die die bash als Login-Shell benutzen:

BEGIN {
  FS=":";
  print "Bash-Benutzer:"
  print "-------------------------------------------------------------------";
  printf "%-15s %-30s %s\n", "user-id", "Name", "Home";
  print "-------------------------------------------------------------------";
}
/\/bin\/bash/ {printf "%-15s %-30s %s\n", $1, $5, $6}


prev next