Wie arbeitet awk?
[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
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}