- 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.txt
Lösche einen Zeilenbereich (z. B. Zeilen 2 bis 5):
sed '2,5d' datei.txt
Lö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.txt
Nur 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