awk
Muster und Aktionen
Suche…
Einführung
Ein awk besteht aus Mustern und Aktionen, die in geschweiften Klammern eingeschlossen sind, wenn ein Muster passt. Das grundlegendste Muster ist das leere Muster, das zu jedem Datensatz passt. Die grundlegendste Aktion ist die leere Aktion, die { print } , die wiederum { print $0 } . Wenn sowohl das Muster als auch die Aktion leer sind, macht awk einfach nichts.
Das folgende Programm gibt beispielsweise einfach seine Eingabe zurück:
awk '{ print }' /etc/passwd
Da { print } die Standardaktion ist und ein wahrer Wert mit einem Datensatz übereinstimmt, könnte dieses Programm folgendermaßen umgeschrieben werden:
awk '1' /etc/passwd
Der häufigste Mustertyp ist wahrscheinlich ein regulärer Ausdruck, der in Schrägstrichen eingeschlossen ist. Das folgende Programm druckt alle Datensätze, die mindestens zwei aufeinander folgende Vorkommen des Buchstabens o , zum Beispiel:
awk '/oo+/ { print }' /etc/passwd
Sie können jedoch beliebige Ausdrücke als Muster verwenden. Das folgende Programm druckt beispielsweise die Namen (Feld 1) der Benutzer in der Gruppe 0 (Feld 4):
awk -F: '$4 == 0 { print $1 }' /etc/passwd
Anstatt genau zu passen, können Sie auch einen regulären Ausdruck abgleichen. Das folgende Programm druckt die Namen aller Benutzer in einer Gruppe mit mindestens einer Null in ihrer Gruppen-ID:
awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd
Zeilen nach Länge filtern
Mit diesem Muster können Sie Zeilen nach ihrer Länge filtern
$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE
$awk 'length($0) > 4 { print $0 }' file
AAAAA
$
In jedem Fall erlaubt das Muster die Ausführung des nächsten Codeblocks. Wenn die Standardaktion für AWK die aktuelle Zeile {print} druckt, wird das gleiche Ergebnis angezeigt, wenn Folgendes ausgeführt wird:
$awk 'length($0) > 4 ' file
AAAAA