awk ist ein mächtiges Textverarbeitungs-Werkzeug unter Linux/Unix, das Zeilen in Felder (Spalten) zerlegt und nach Bedingungen verarbeitet. Der Name stammt von den Initialen der Erfinder Aho, Weinberger und Kernighan.

Grundlagen: Spalten ausgeben

awk '{print $1}' datei.txt        # erste Spalte je Zeile
awk '{print $1, $3}' datei.txt    # Spalten 1 und 3
awk -F: '{print $1}' /etc/passwd  # Trennzeichen ':' statt Leerzeichen

Bedingungen und Zähler

awk '$3 > 100 {print $1}' stat.txt   # nur Zeilen, bei denen Spalte 3 > 100
awk '{sum += $2} END {print sum}' daten.txt  # Summe aller Spalten-2-Werte
awk '{count++} END {print count}' datei.txt # Zeilen zählen

Typische Praxis

ps aux | awk '{print $2, $11}'    # PID und Kommando aller Prozesse
df -h | awk 'NR > 1 {print $5}'   # Auslastung ohne Kopfzeile
awk -F, '{print $1}' export.csv    # CSV-Spalten extrahieren

Praxis-Tipps

  • NR ist die laufende Zeilennummer, NF die Anzahl der Felder.
  • BEGIN { ... } läuft vor, END { ... } nach der Verarbeitung — ideal für Summen und Reporte.
  • awk versteht Gleitkomma: Damit lassen sich Statistiken direkt im Terminal berechnen.
  • In HTML-Ausgaben > und < als &gt;/&lt; schreiben, sonst bricht der Browser den Code.

Verwandte Grundlagen: sed-Befehle, grep-Befehle und Bash-Befehle.