Zum Inhalt springen

AWK und sed: Text-Magie ohne Einhorn-Overhead

23. Juni 2026 durch
AWK und sed: Text-Magie ohne Einhorn-Overhead
Tom Ziegler

Logs lügen nicht, sie nuscheln nur extrem viel. Genau da kommen awk und sed ins Spiel: zwei Werkzeuge aus der Unix-Werkzeugkiste, die seit gefühlt der Kreidezeit existieren und trotzdem regelmäßig moderner wirken als irgendein Web-Dashboard mit Lade-Spinner des Todes.

Wir haben beide Tools mal wieder im Admin-Alltag rausgeholt. Nicht aus Nostalgie. Sondern weil sie schnell sind, überall laufen und keine 17 Dependencies installieren wollen, nur um eine Zeile Text umzubauen.

sed ist unser Skalpell für Streams. Suchen, ersetzen, löschen, einfügen. Zack. Beispiel: In einer Config steht noch eine alte IP-Adresse:

sed -i 's/192\.168\.10\.5/10.20.30.40/g' /etc/mein-dienst.conf

Ja, -i editiert direkt in der Datei. Das ist praktisch. Und gefährlich. Also machen wir bei wichtigem Kram lieber:

sed -i.bak 's/debug=true/debug=false/' app.conf

Dann bleibt app.conf.bak als Rettungsleine. Sysadmin-Airbag quasi.

Zeilen löschen? Auch simpel:

sed '/^#/d' config.conf

Entfernt Kommentarzeilen aus der Ausgabe. Leere Zeilen gleich mit?

sed '/^\s*$/d;/^#/d' config.conf

Schon sieht die Config weniger nach Archäologie aus.

awk ist dagegen eher das Schweizer Taschenmesser mit Taschenrechner, Feldtrenner und eingebautem Grummelblick. Es denkt in Spalten. Perfekt für Logs, CSV-artige Daten und alles, was mit Whitespace getrennt ist.

Top-IPs aus einem Nginx-Log?

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head

Klassiker. Funktioniert. Immer noch. Während andere Tools noch ihren JVM-Heap sortieren, hast du schon Kaffee nachgeschenkt.

Spannender wird es mit Bedingungen. Alle Requests mit HTTP 500:

awk '$9 == 500 {print $1, $7, $9}' /var/log/nginx/access.log

Hier ist $9 der Statuscode, $7 die URL, $1 die Client-IP. Wichtig: Das passt nur, wenn dein Logformat entsprechend aussieht. Logs sind wie Schneeflocken. Nur nerviger.

Auch Summen gehen gut. Beispiel: Speicherverbrauch aus einer Prozessliste addieren:

ps aux | awk '{sum += $6} END {print sum/1024 " MB"}'

Nicht perfekt wissenschaftlich, aber für den schnellen Blick völlig okay.

Richtig praktisch wird awk mit eigenen Trennern. Eine /etc/passwd liest sich so:

awk -F: '{print $1, $3, $7}' /etc/passwd

-F: setzt den Doppelpunkt als Feldtrenner. Ausgabe: User, UID, Shell. Schnell prüfen, wer eine echte Login-Shell hat:

awk -F: '$7 !~ /(nologin|false)$/ {print $1, $7}' /etc/passwd

Unser Admin-Merksatz: sed verändert Zeilen, awk versteht Spalten. Natürlich können beide mehr. Sehr viel mehr. Aber genau diese einfache Trennung hilft im Alltag.

Noch ein schönes Duo: Config-Werte auslesen und bereinigen.

sed '/^\s*#/d;/^\s*$/d' app.conf | awk -F= '{print $1 " -> " $2}'

Erst Kommentare und Leerzeilen weg, dann Key-Value hübsch ausgeben. Kein Python-Skript, kein YAML-Parser, kein Drama. Wobei: Bei echtem YAML bitte nicht mit sed herumchirurgieren. Das endet sonst wie RAID5 mit zwei kaputten Platten.

Fazit aus unserem Selbstversuch: awk und sed bleiben. Nicht, weil sie alt sind. Sondern weil sie genau das tun, was Admins ständig brauchen: Text schnell filtern, umbauen, zusammenzählen und verstehen. Direkt auf der Shell. Ohne Schnickschnack. Ohne Login ins nächste Tool-Portal. Einfach tippen, prüfen, fertig.

AWK und sed: Text-Magie ohne Einhorn-Overhead
Tom Ziegler 23. Juni 2026
Diesen Beitrag teilen