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 wie g (global) oder i (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