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
NRist die laufende Zeilennummer,NFdie 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
>/<schreiben, sonst bricht der Browser den Code.
Verwandte Grundlagen: sed-Befehle, grep-Befehle und Bash-Befehle.