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
-ibleibt 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 -Ewerden erweiterte reguläre Ausdrücke aktiviert.
Verwandte Grundlagen: grep-Befehle, awk-Befehle und Bash-Befehle.