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
- IP-Adressen aus Logdatei extrahieren
sed -n 's/.*Client \([0-9.]*\).*/\1/p' access.log
- Versionseintrag in Konfigurationsdatei aktualisieren
sed -i 's/version=1.0/version=2.0/' app.conf
- Kommentare aus Skripten entfernen
sed '/^#/d' script.sh
9. Zusammenfassung
Befehl | Funktion |
---|---|
s/Suche/Ersetzung/ | Suchen und Ersetzen |
-i | Direkt in Datei speichern |
/Muster/d | Zeilen löschen |
i Text / a Text | Zeilen einfügen |
-n '5,10p' | Zeilenbereiche ausgeben |
Schreibe einen Kommentar