- Veröffentlicht am
- • How2-Tipps
Der Linux-Befehl `sed` – Textbearbeitung wie ein Profi auf der Kommandozeile
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
In der Linux-Welt gehört sed zu den mächtigsten und gleichzeitig meistunterschätzten Tools.
Der Name steht für „stream editor“, also ein Editor, der Textströme verarbeitet.
Mit sed kannst du Textdateien automatisch durchsuchen, ersetzen, löschen oder verändern – ohne sie manuell zu öffnen.
Perfekt für Skripte, Systemadministration und Datenverarbeitung direkt im Terminal.
Was ist sed?
sed liest Eingaben zeilenweise ein (z. B. aus einer Datei oder einer Pipe), führt die gewünschten Textoperationen aus und gibt das Ergebnis auf stdout (also die Konsole) aus.
Das bedeutet:
- Es bearbeitet Text im Durchlauf,
- speichert die Änderungen nicht automatisch in der Datei (außer du gibst das explizit an),
- und ist damit ideal für Automatisierungen, Skripte und Filteroperationen.
Grundsyntax
Die allgemeine Syntax von sed lautet:
sed [OPTIONEN] 'Befehl' [Datei]
Beispiel:
sed 's/Hallo/Hi/' datei.txt
Das ersetzt im Text das erste Vorkommen von „Hallo“ durch „Hi“ – und zeigt das Ergebnis direkt im Terminal an.
Die wichtigsten Befehle
1. s – Suchen und Ersetzen
Die meistgenutzte Funktion ist das Ersetzen mit s („substitute“):
sed 's/alt/neu/' datei.txt
Ersetzt das erste Vorkommen von alt pro Zeile durch neu.
Wenn du alle Vorkommen ersetzen willst:
sed 's/alt/neu/g' datei.txt
Das g steht für „global“ – also alle Vorkommen in jeder Zeile.
Beispiel:
echo "Linux ist cool, Linux ist frei" | sed 's/Linux/Unix/g'
Ausgabe:
Unix ist cool, Unix ist frei
2. -i – Direktes Bearbeiten von Dateien (in-place)
Wenn du willst, dass sed die Änderungen direkt in die Datei schreibt:
sed -i 's/foo/bar/g' datei.txt
Tipp: Wenn du eine Sicherheitskopie möchtest, nutze:
sed -i.bak 's/foo/bar/g' datei.txt
Dann wird automatisch eine Datei datei.txt.bak mit dem Originalinhalt erstellt.
3. Zeilen löschen
Mit dem d-Befehl kannst du Zeilen löschen.
Lösche eine bestimmte Zeile (z. B. Zeile 3):
sed '3d' datei.txtLösche einen Zeilenbereich (z. B. Zeilen 2 bis 5):
sed '2,5d' datei.txtLösche leere Zeilen:
sed '/^$/d' datei.txt
4. Zeilen ausgeben
Mit -n und p kannst du gezielt Zeilen anzeigen:
Nur Zeile 3:
sed -n '3p' datei.txtNur Zeilen, die „Error“ enthalten:
sed -n '/Error/p' log.txt
5. Mehrere Befehle kombinieren
Mehrere Operationen kannst du mit -e oder durch Semikolon trennen:
sed -e 's/foo/bar/g' -e '/debug/d' datei.txt
oder
sed 's/foo/bar/g; /debug/d' datei.txt
Ersetzt foo durch bar und löscht alle Zeilen, die debug enthalten.
Erweiterte Tricks mit sed
1. Nur bestimmte Zeilenbereiche bearbeiten
Du kannst den Befehl auf bestimmte Zeilen begrenzen:
sed '1,5s/test/TEST/g' datei.txt
Nur in Zeilen 1 bis 5 wird „test“ durch „TEST“ ersetzt.
2. Mit regulären Ausdrücken arbeiten
sed versteht reguläre Ausdrücke (Regex).
Beispiel: Alle Zahlen durch # ersetzen:
sed 's/[0-9]/#/g' datei.txt
Oder Zeilen löschen, die mit „#“ beginnen (z. B. Kommentare):
sed '/^#/d' datei.txt
3. Mehrzeilige Ersetzungen
sed arbeitet zeilenweise, aber du kannst mit N Zeilen zusammenführen.
Beispiel: Zwei Zeilen zu einer zusammenführen (Zeilenumbruch entfernen):
sed ':a;N;$!ba;s/\n/ /g' datei.txt
4. Platzhalter in Ersetzungen
Manchmal ist / ein ungünstiger Trenner (z. B. bei Pfaden).
Du kannst jedes beliebige Zeichen als Trenner verwenden:
sed 's:/usr/local:/opt/apps:g' datei.txt
oder
sed 's|/home/user|/data|g' datei.txt
Praxisbeispiele
Hier ein paar echte Szenarien aus der Serverpraxis:
Beispiel 1: IP-Adresse in Config-Datei ändern
sed -i 's/192\.168\.1\.10/192.168.1.20/g' /etc/app/config.conf
Beispiel 2: Alle „ERROR“-Zeilen aus Log entfernen
sed -i '/ERROR/d' /var/log/app.log
Beispiel 3: HTML-Tags entfernen
sed 's/<[^>]*>//g' seite.html
Beispiel 4: Datum an jede Zeile anhängen
sed "s/$/ $(date +%F)/" datei.txt
sed in Kombination mit anderen Befehlen
sed ist besonders mächtig in Kombination mit Pipes (|):
Beispiel 1: Logdateien filtern und ersetzen
cat /var/log/syslog | grep ssh | sed 's/sshd/SecureShell/g'
Beispiel 2: Mit awk oder grep kombinieren
grep "error" logfile | sed 's/error/ERROR/g' | awk '{print NR ": " $0}'
Unterschiede zu awk und grep
| Tool | Hauptzweck |
|---|---|
| grep | Zeilen finden, die einem Muster entsprechen |
| sed | Textströme bearbeiten und verändern |
| awk | Daten verarbeiten und formatieren (Feldbasiert) |
➡️ Wenn du Text bearbeiten willst → sed.
Wenn du nach Text suchst → grep.
Wenn du Tabellen oder Felder verarbeitest → awk.
sed ist ein unscheinbares, aber extrem mächtiges Werkzeug – ein echtes Schweizer Taschenmesser für Textverarbeitung in Linux.
Mit nur wenigen Zeichen kannst du:
✅ Text ersetzen ✅ Zeilen löschen ✅ Logfiles bereinigen ✅ Konfigurationsdateien anpassen ✅ und ganze Datenströme automatisiert bearbeiten
Einmal verstanden, wirst du sed in keinem Bash-Skript oder DevOps-Workflow mehr missen wollen.
Nützliche Links
- Manpage:
man sed - GNU-Dokumentation: https://www.gnu.org/software/sed/
- Regex-Tester: https://regex101.com