sed und awk ohne Manpage-Angst
sed und awk sind zwei winzige Unix-Programme, die Text bewegen. sed editiert Files Zeile für Zeile (Replace, Delete, Insert). awk liest Tabellen und macht Math oder Filtering auf Spalten. Sie sind auf jedem Mac, jeder Linux-Box, jedem Server, in den du SSH-st. Keine Installation. Sie sind aber auch berüchtigt kryptisch: die Syntax wurde 1977 entworfen und nie aktualisiert.
Dieser Helper baut den Befehl für dich. Aktion wählen (substitute, Zeile löschen, Spalten printen, Spalte summieren...), Inputs ausfüllen, rechts erscheint der Befehl. Drunter läuft eine Live-Vorschau dieselbe Logik in deinem Browser auf einem editierbaren Sample-Text, sodass du das Ergebnis vor dem Kopieren siehst.
Wir decken die nützlichste Teilmenge beider Tools ab (substitute, delete, Zeilen einfügen/anhängen/ersetzen, Ranges printen für sed; Spalten printen, conditional Print, count, sum, average, filter, custom Programm für awk), mit einem Cookbook mit 20 fertigen Rezepten: Leerzeilen löschen, Whitespace zusammendrücken, Spalte summieren, Group-by und Zählen, CSV zu TSV und mehr. Klick ein Rezept, um es in den Builder zu laden.
Achtung: die Vorschau nutzt JavaScript-Regex, was nah an POSIX Extended Regex ist, aber nicht identisch zu GNU sed oder BSD sed. Für Alltags-Substitutionen und Spaltenarbeit ist die Antwort korrekt. Für Edge-Cases (Lookarounds, locale-bewusste Word-Boundaries, komplexe Address-Ranges) schau ins FAQ.
So nutzt du das Tool
- Tool oben wählen: sed für Zeilen-Edits (replace, delete, print, insert) und awk für Spalten (Spalte printen, summieren, nach Wert filtern).
- Im sed-Modus die Aktion wählen (Substitute, Delete, Nur matchende printen, vor Zeile N einfügen, nach Zeile N anhängen, Zeile N ersetzen, Zeilen N bis M printen). Die passenden Inputs erscheinen drunter.
- Dein Pattern und Replacement für substitute tippen oder eine Zeilennummer für insert / append / change. Flags (g, i, p, Nth) sind Chips zum An-/Abschalten.
- Das Sample-Input rechts auf deine echten Daten anpassen. Das Output-Pane updated live: du siehst genau, was der Befehl macht, bevor du kopierst.
- In-place Edit anschalten, wenn das File direkt verändert werden soll (`-i`). GNU für Linux, BSD für macOS, der Helper zeigt die richtige Variante (`-i` versus `-i ""`).
- Im awk-Modus einen Field-Separator wählen (per Default Whitespace, Komma für CSV, Semikolon, Tab oder eigenes Zeichen). Dann eine Aktion: Spalte N printen, conditional Print, Treffer zählen, summieren, mitteln, filtern oder eigenes Programm schreiben.
- Das Cookbook unten öffnen für 20 fertige Rezepte (10 für sed, 10 für awk). Rezept klicken, in den Builder laden, editieren, finalen Befehl kopieren.
- Befehl kopieren aus dem rechten Panel. In dein Terminal pasten mit deinem echten Filename statt `file.txt`. Das Output-Pane ist zur Verifikation, nicht für Produktivdaten: lass den echten Befehl auf deinem File laufen, wenn du dem Ergebnis vertraust.
Wann das nützlich ist
Sechs echte Momente, in denen sed oder awk dir Minuten (oder Stunden) sparen:
- Massen-Replace eines Strings über viele Dateien. Du hast eine Variable von `userId` auf `accountId` umbenannt. `sed -i 's/userId/accountId/g' src/**/*.ts` macht den ganzen Codebase in einem Befehl, schneller als die IDE-Suche "find in files" und funktioniert auch über SSH.
- Log-File vor der Analyse säubern. Das Log hat Leerzeilen, Debug-Geräusche und 50 Spalten, du brauchst nur 3. `awk '/ERROR/ { print $1, $5, $9 }'` behält nur die Error-Zeilen und nur Timestamp, Status und Message. Eine Zeile, keine Parser-Library.
- Zwischen CSV und TSV konvertieren. Ein Tool exportiert CSV, das andere will TSV. `awk -F',' '{$1=$1; print}' OFS='\t'` tauscht die Separator in einem Rutsch, kein Python, kein Excel, keine Tempfiles.
- Eine Range aus einem File ziehen. Du brauchst Zeile 1000 bis 2000 eines 50.000-Zeilen-Logs. `sed -n '1000,2000p' file.log` ist sofort die Antwort und funktioniert auf einem Remote-Server ohne Extra-Tools.
- Eine Spalte aus einem Report summieren. Die Buchhaltung schickt CSV mit Rechnungen. Du willst den Total. `awk -F',' '{ sum += $5 } END { print sum }' invoices.csv` zählt Spalte 5 über alle Zeilen in Millisekunden.
- Dateien in einem Ordner umbenennen. Du hast hunderte Files wie `IMG_001.jpg` und willst sie lowercased und datiert. Eine Schleife mit `sed`, die jeden neuen Namen baut, macht das Renaming ohne eine Zeile Code: nur Shell-Klebstoff.