Einer der meistgenutzten Befehle in sed ist s – der Substitute-Befehl.
Mit ihm kannst du gezielt Texte oder Muster suchen und durch andere ersetzen.
In diesem Kapitel schauen wir uns alle Varianten im Detail an, inklusive Flags, Regex und praktischen Tricks.
🔹 Syntax von s
sed 's/MUSTER/ERSATZ/FLAGS' datei
-
MUSTER→ wonach gesucht wird (String oder Regex). -
ERSATZ→ womit es ersetzt wird. -
FLAGS→ Optionen wieg(global) oderi(case-insensitive).
👉 Standardmäßig ersetzt sed nur das erste Vorkommen pro Zeile.
🔹 Einfaches Ersetzen
Beispiel: foo durch bar ersetzen:
sed 's/foo/bar/' datei.txt
👉 Nur das erste foo pro Zeile wird ersetzt.
🔹 Globales Ersetzen
Mit dem Flag g ersetzt du alle Vorkommen pro Zeile:
sed 's/foo/bar/g' datei.txt
Ausgabe (vorher → nachher):
foo foo foo → bar bar bar
🔹 Case-insensitive Ersetzen
Manchmal willst du unabhängig von Groß-/Kleinschreibung ersetzen.
sed 's/foo/bar/Ig' datei.txt
👉 I sorgt für case-insensitive Suche (Foo, FOO, fOo → alles wird bar).
🔹 Andere Trennzeichen nutzen
Standardmäßig nutzt sed / als Trennzeichen.
Bei Pfaden oder URLs kann das lästig sein.
Beispiel:
sed 's|/home/user|/srv/data|g' config.txt
👉 Praktisch für Pfade oder HTML-Tags (s|<br>|<br/>|g).
🔹 Ersetzen mit Referenzen (Backreferences)
sed kann Teile des Musters in Klammern speichern und im Ersatz wiederverwenden.
Beispiel: Namen tauschen (Vorname Nachname → Nachname, Vorname):
echo "Alice Müller" | sed 's/\(.*\) \(.*\)/\2, \1/'
Ausgabe:
Müller, Alice
👉 \1 = erster Teil in \(...\), \2 = zweiter Teil.
🔹 Nur bestimmte Vorkommen ersetzen
Du kannst das n-te Vorkommen in einer Zeile ersetzen.
Beispiel: nur das zweite foo ersetzen:
echo "foo foo foo" | sed 's/foo/bar/2'
Ausgabe:
foo bar foo
👉 Ohne g ersetzt sed immer nur ein Vorkommen – hier steuerst du, welches.
🔹 Kombination von Flags
Beispiel: alle foo (egal ob groß/klein) durch bar ersetzen:
sed 's/foo/bar/Ig' datei.txt
👉 Flags kannst du frei kombinieren.
🔹 Regex für flexible Ersetzungen
Mit Regulären Ausdrücken kannst du Muster allgemein beschreiben:
- Alle Zahlen ersetzen:
sed 's/[0-9]\+/Zahl/g' datei.txt
- Alle Wörter durch
Xersetzen:sed 's/[A-Za-z]\+/X/g' datei.txt
- Alle Leerzeilen entfernen:
sed '/^$/d' datei.txt
👉 Damit deckst du auch unvorhersehbare Texte ab.
🔹 Übung
1. Erstelle demo.txt mit folgendem Inhalt:
Alice lebt in Berlin Bob lebt in Hamburg Charlie lebt in Köln
- Ersetze „lebt“ durch „wohnt“.
- Ersetze alle Städtenamen durch STADT.
- Schreibe die Namen im Format „Nachname, Vorname“ (z. B. „Alice Müller“ → „Müller, Alice“).
2. Bonus: Ersetze nur das zweite Wort in jeder Zeile durch XXX.
✅ Zusammenfassung
s/MUSTER/ERSATZ/FLAGS ist der Kern von sed.
Flags: g = global, I = case-insensitive, Zahl = n-tes Vorkommen.
Mit anderen Trennzeichen (|, #, :) vermeidest du Konflikte.
Mit \1, \2, … kannst du Teile des Musters wiederverwenden.
Regex macht Ersetzungen flexibel – ideal für Zahlen, Wörter, Muster.
👉 Im nächsten Kapitel lernst du, wie du mit sed Zeilen gezielt bearbeiten kannst: löschen, einfügen, ersetzen, verschieben.
📚 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
