sed (Stream Editor) ist ein nicht-interaktives Tool, das Text
stromweise verarbeitet: Zeile für Zeile lesen, nach Regeln verändern und ausgeben. Es ist extrem schnell, eignet sich für Batch-Änderungen in großen Dateien und lässt sich nahtlos in Pipes und Skripte integrieren. In diesem Kapitel lernst du die wichtigsten Grundbefehle und Konzepte, damit du sofort produktiv mit
sed arbeiten kannst.
🔹 Wie sed grundsätzlich arbeitet
sed liest Eingabetext (Datei oder STDIN) zeilenweise.
- Für jede Zeile wird eine oder mehrere Anweisungen ausgeführt.
- Standardmäßig schreibt sed die veränderte Zeile auf STDOUT (Ausgabe), die Originaldatei bleibt unangetastet — außer du nutzt
-i (in-place).
- Typische Einsatzweise:
sed 's/pattern/replacement/' datei oder in einer Pipeline: cat datei | sed '...'.
🔹 Der grundlegende Ersetzungsbefehl s
Syntax:
sed 's/ALT/NEU/' datei
Beispiel: Ersetze das erste Vorkommen von
Alice in jeder Zeile durch
Alicia:
sed 's/Alice/Alicia/' users.txt
Wichtig:
🔹 Flags & Optionen (häufig genutzt)
🔹 Adressierung: Welche Zeilen verändern?
Du kannst spezifizieren, auf welche Zeilen eine Anweisung angewendet wird.
→ Nur Zeilen, die
ERROR enthalten, werden bearbeitet.
🔹 Löschen, Einfügen, Ersetzen ganzer Zeilen
- Löschen (
d):
sed '/^#/d' datei # Löscht Kommentarzeilen, die mit # beginnen
sed '2d' datei # Löscht die zweite Zeile
- Einfügen vor einer Zeile (
i) — sed-Programmdatei oder mit -e (in-place beachten):
sed '2iNeue Zeile' datei # Fügt vor Zeile 2 "Neue Zeile" ein
- Anhängen nach einer Zeile (
a):
sed '2aAnhänge dort' datei
- Ganze Zeile ersetzen (
c - change):
sed '3cDies ist die neue dritte Zeile' datei
👉 Hinweis: Zeilenumbrüche und Backslashes in
i/
a/
c sind sed-kontextabhängig; in Shell-Einzeilern oft mit
arbeiten oder Skriptdatei verwenden.
🔹 Reguläre Ausdrücke kurz (POSIX-Basis)
^ → Zeilenanfang, $ → Zeilenende
. → beliebiges Zeichen
* → 0 oder mehr des vorherigen Zeichens
+ bzw. {m,n} → Wiederholungen (je nach sed-Version; GNU sed unterstützt +)
- Zeichenklassen:
[0-9], [A-Za-z], [^#] (nicht #)
Beispiel: Lösche Zeilen, die mit einer Zahl beginnen:
sed '/^[0-9]/d' datei
🔹 Mehrere Befehle / Skriptdatei
Du kannst mehrere
sed-Anweisungen kombinieren:
Das ist besser für längere Bearbeitungsschritte und reproduzierbare Änderungen.
🔹 sed in Pipelines
sed ist perfekt, um Daten für weitere Tools vorzubereiten, z. B.:
cat logfile | sed '/^#/d' | sed 's/old/new/g' | awk '{print $1, $3}'
Oft reicht eine einzelne
sed-Pipeline:
sed '/^#/d; s/,/./g' daten.csv | awk -F';' '{print $1, $2}'
🔹 Vorsicht: -i und Backups
-i ändert Dateien direkt. Für Sicherheit:
sed -i.bak 's/old/new/g' datei # Original liegt in datei.bak
Wenn du Inplace ohne Backup machst, verlierst du die Originalversion - nutze
-i bedacht, besonders auf Produktionssystemen.
🔹 Praktische Beispiele
- Ersetze
foo durch bar in einer Datei:
sed 's/foo/bar/g' file.txt
- Lösche alle Kommentarzeilen (beginnend mit
#):sed 's/foo/bar/g' file.txt
sed '/^#/d' file.conf
- Ersetze Pfade mit
/ in Pattern (anderes Delimiter):
sed 's|/home/user|/mnt/backup|g' config
- Nur in Zeilen mit
ERROR foo→bar ersetzen:
sed '/ERROR/s/foo/bar/g' logfile
- Füge vor Zeile 1 eine Kopfzeile ein:
sed '1i# Log-Report' logfile
🔹 Übungen
1. Erstelle demo.txt:
# Das ist ein Kommentar
Alice ist 25 Jahre alt
Bob ist 30 Jahre alt
- Entferne die Kommentarzeile mit
sed.
- Ersetze
ist durch war in der Datei zur Ausgabe.
- Speichere die Änderung mit
-i.bak und prüfe demo.txt.bak.
2. Datei paths.txt enthält /home/user/docs und /home/user/images:
- Ersetze
/home/user durch /srv/data mit sed (achte auf / im Muster).
3: Datei lines.txt hat viele Zeilen:
- Lösche Zeile 2 bis 4 (
2,4d)
- Füge nach Zeile 3 die Zeile
--- ein.
4. Kombinationsübung:
- Nimm eine
raw.csv mit #-Kommentarzeilen und Kommas als Dezimaltrenner (1,23).
- Entferne Kommentare, ersetze
, durch . in den Zahlen und gib die bereinigte Ausgabe.
- (Tipp:
sed '/^#/d; s/,/./g' raw.csv)
✅ Zusammenfassung
sed ist ein Stream-Editor: schnell, nicht interaktiv, ideal für Batch-Textmanipulationen.
- Kernbefehle:
s/// (Ersetzen), d (löschen), i/a/c (einfügen/anhängen/ersetzen) und Adressierung (Zeilennummern, Bereiche, Muster).
- Nutze
-n + p für gezielte Ausgabe, -i mit Backup für sichere Inplace-Änderungen.
- Kombiniere sed mit Pipes und awk für vollständige Daten-Pipelines.
- Schreibe längere Sed-Skripte in Dateien und verwende
sed -f script.sed für Übersicht und Wiederverwendbarkeit.
👉
Im nächsten Kapitel lernst du, wie du wie du mit Hilfe von Regex suchen & ersetzen kannst.
📚 Inhaltsverzeichnis
👉
sed Kapitel 1: Grundlagen von sed – erste Ersetzungen & Konzepte
👉
sed Kapitel 2: Suchen & Ersetzen mit sed – Grundlagen & Regex
👉
sed Kapitel 3: Zeilen bearbeiten mit sed
👉
sed Kapitel 4: sed-Skripte schreiben & kombinieren
👉
sed Kapitel 5: sed in Kombination mit anderen Tools
👉
sed Kapitel 6: Praxisprojekt – Konfigurationsdateien automatisch bereinigen & anpassen
⭐ Bonus-Kapitel
👉
sed Kapitel 7: Bonus – Profi-Tipps & Best Practices für sed im Alltag