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