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
X
ersetzen: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