sed (stream editor) ist der Linux-/Unix-Befehl für nicht-interaktive Texttransformation. Er liest einen Text Zeile für Zeile, wendet Regeln an und gibt das Ergebnis aus — ideal für Scripts und Datenpipeline-Verarbeitung.

Grundlagen: Ersetzen

sed 's/alt/neu/' datei.txt        # erste Ersetzung je Zeile
sed 's/alt/neu/g' datei.txt       # alle Ersetzungen je Zeile (global)
sed -i 's/alt/neu/g' datei.txt    # Datei direkt ändern (in-place)

Zeilen auswählen

sed -n '5p' datei.txt             # nur Zeile 5 ausgeben
sed -n '10,20p' datei.txt         # Zeilen 10 bis 20
sed '1,5d' datei.txt              # Zeilen 1-5 löschen
sed -n '/fehler/p' log.txt        # nur Zeilen mit 'fehler'

Typische Praxis

sed -i 's/
$//' skript.sh        # Windows-Zeilenenden entfernen
sed -i 's/  */ /g' data.txt       # mehrfache Leerzeichen bündeln
head -50 app.log | sed -n '1,5p'  # in Pipes kombinieren

Praxis-Tipps

  • Ohne -i bleibt die Datei unverändert — erst testen, dann in-place schreiben.
  • Backup vor In-place-Änderung: sed -i.bak 's/alt/neu/g' datei.
  • Trennzeichen sind frei wählbar: sed 's|/usr|/opt|g' für Pfade mit Schrägstrich.
  • Mit sed -E werden erweiterte reguläre Ausdrücke aktiviert.

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