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
> ...
> Zeile

Komponente nur für Zeilen mit int ausgeben (regex)

awk '/int/ {printf("Hello, World!\n")}' code.c

Variablen: Hier wird die Anzahl an int-Statements gezählt

awk 'BEGIN {u=0;} /int/ {u++;} END {printf("%d", u);}' code.c

Komponenten: $0 ist die erste Komponente, die ganze Zeile

awk '{ printf("%s\n", $0) }' input.txt
# Äquivalent:
awk '{ print }' input.txt

Field-Separator

awk 'BEGIN { FS=";" u=0; } /int/ {u++;} END {printf("%d", u);}' input.txt

Record-Separator trennt standardmäßig Zeilen Das Programm zählts Statements

awk 'BEGIN { FR=";" u=0; } /int/ {u++;} END {printf("%d", u);}' input.txt

Vorteile gegenüber sed

  • Arithmetische Funktionen
  • Variablen und Kotrollfluss
  • Zugriff auf einzelne Felder innerhalb von Zeilen
  • Formatierte Ausgaben
  • Stringfunktionen
  • C Programmlogik