sed – Regelbasierte Textbearbeitung im Linux Terminal

Nachdem wir uns im letzten Beitrag mit Zählen, Sortieren und Filtern von Textdateien beschäftigt haben, gehen wir nun einen Schritt weiter. Mit sed (Stream Editor) steht uns ein Werkzeug zur Verfügung, das Textdateien automatisiert bearbeiten, durchsuchen und transformieren kann – direkt aus der Kommandozeile und ohne eine Datei manuell zu öffnen.


1. Was ist sed?

sed liest Textzeilen ein, führt darauf Befehle aus und gibt die veränderten Zeilen wieder aus. Standardmäßig werden die Originaldateien nicht verändert, sondern nur die Ausgabe angepasst.

Typische Einsatzgebiete:

  • Suchen und Ersetzen von Text
  • Entfernen oder Einfügen von Zeilen
  • Formatieren und Umstrukturieren von Daten

2. Grundlegende Syntax

sed [Optionen] 'Befehle' datei

Die Befehle werden in einfache Anführungszeichen gesetzt, da sie oft Sonderzeichen enthalten.


3. Text ersetzen

Der häufigste Anwendungsfall ist das Suchen und Ersetzen von Text.

Syntax

sed 's/Suche/Ersetzung/' datei

Beispiele

  • „foo“ durch „bar“ ersetzen: sed 's/foo/bar/' datei.txt
  • Alle Vorkommen in jeder Zeile ersetzen (global): sed 's/foo/bar/g' datei.txt
  • Groß-/Kleinschreibung ignorieren: sed 's/foo/bar/gi' datei.txt

4. In-Datei-Ersetzungen mit -i

Standardmäßig gibt sed die Änderungen nur aus. Mit der Option -i können Dateien direkt verändert werden:

sed -i 's/foo/bar/g' datei.txt

Sicherungskopien erstellen:

sed -i.bak 's/foo/bar/g' datei.txt

→ Erstellt zusätzlich datei.txt.bak mit dem Originalinhalt.


5. Zeilen löschen und einfügen

  • Zeilen löschen: sed '3d' datei.txt # Löscht Zeile 3 sed '/Muster/d' datei.txt # Löscht Zeilen mit „Muster“
  • Zeilen einfügen: sed '2i Neue Zeile' datei.txt # Vor Zeile 2 einfügen sed '3a Text am Ende' datei.txt # Nach Zeile 3 einfügen

6. Text extrahieren

sed kann auch Zeilenbereiche ausgeben:

sed -n '5,10p' datei.txt

→ Gibt nur die Zeilen 5 bis 10 aus.


7. Komplexe Bearbeitungen

Mehrere Befehle lassen sich kombinieren:

sed -e 's/foo/bar/g' -e '/Muster/d' datei.txt

→ Ersetzt „foo“ durch „bar“ und löscht alle Zeilen mit „Muster“.


8. Praxisbeispiele

  1. IP-Adressen aus Logdatei extrahieren sed -n 's/.*Client \([0-9.]*\).*/\1/p' access.log
  2. Versionseintrag in Konfigurationsdatei aktualisieren sed -i 's/version=1.0/version=2.0/' app.conf
  3. Kommentare aus Skripten entfernen sed '/^#/d' script.sh

9. Zusammenfassung

BefehlFunktion
s/Suche/Ersetzung/Suchen und Ersetzen
-iDirekt in Datei speichern
/Muster/dZeilen löschen
i Text / a TextZeilen einfügen
-n '5,10p'Zeilenbereiche ausgeben

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert