awk ist ein programmierbarer Universalfilter.
awk-Programme schauen aus wie c-Skripte
awk 'BEGIN {printf("Hello, World!\n")} {} END {}' input.txt
> Hello, World!- Max. 3 Komponenten, eine am Anfang, eine main, eine am Ende
-f- Skriptdatei angeben
Die Main Komponente wird für jede Zeile ausgeführt
awk '{printf("Zeile");}' input.txt
> Zeile
> Zeile
> Zeile
> ...
> ZeileKomponente nur für Zeilen mit int ausgeben (regex)
awk '/int/ {printf("Hello, World!\n")}' code.cVariablen: Hier wird die Anzahl an int-Statements gezählt
awk 'BEGIN {u=0;} /int/ {u++;} END {printf("%d", u);}' code.cKomponenten: $0 ist die erste Komponente, die ganze Zeile
awk '{ printf("%s\n", $0) }' input.txt
# Äquivalent:
awk '{ print }' input.txtField-Separator
awk 'BEGIN { FS=";" u=0; } /int/ {u++;} END {printf("%d", u);}' input.txtRecord-Separator trennt standardmäßig Zeilen Das Programm zählts Statements
awk 'BEGIN { FR=";" u=0; } /int/ {u++;} END {printf("%d", u);}' input.txtVorteile gegenüber sed
- Arithmetische Funktionen
- Variablen und Kotrollfluss
- Zugriff auf einzelne Felder innerhalb von Zeilen
- Formatierte Ausgaben
- Stringfunktionen
- C Programmlogik