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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow