Eine übersichtliche Darstellung des Befehls sed
Der Stream Editor sed ist ein kraftvolles Werkzeug zur Textmanipulation in Unix-ähnlichen Systemen. Er ermöglicht die Verarbeitung und Umwandlung von Textdaten mithilfe von regulären Ausdrücken. Dieser Beitrag bietet eine detaillierte Übersicht über die Verwendung von sed, erklärt die wichtigsten Parameter und bietet praktische Beispiele.
Grundlegende Syntax
sed [OPTIONEN] 'BEFEHLE' DATEI- OPTIONEN: Steuert das Verhalten von
sed. - BEFEHLE: Gibt die auszuführenden Anweisungen an.
- DATEI: Die Eingabedatei, die verarbeitet werden soll.
Häufig verwendete Optionen
-e : Skript hinzufügen
Ermöglicht das Angeben mehrerer sed-Skripte.
sed -e 'BEFEHL1' -e 'BEFEHL2' DATEI-i : In-Place-Editierung
Verändert die Datei direkt ohne Ausgabe auf STDOUT.
sed -i 's/alt/neu/g' DATEI-i: Aktiviert das Überschreiben der Originaldatei.s/alt/neu/g: Ersetzt alle Vorkommen von “alt” durch “neu”.DATEI: Die zu ändernde Datei.
-n : Unterdrückt automatische Ausgabe
Gibt nur explizit mit p angeforderte Zeilen aus.
sed -n '/Muster/p' DATEI-n: Unterdrückt die Standardausgabe./Muster/p: Druckt nur Zeilen, die dem Muster entsprechen.
-f : Skriptdatei verwenden
Lädt sed-Befehle aus einer Datei.
sed -f skript.sed DATEI-f skript.sed: Verwendet die Befehle aus “skript.sed”.
Wichtige sed-Befehle
s : Ersetzen (substitute)
Syntax:
s/REGEX/ERSATZ/FLAGSREGEX: Das zu suchende Muster.ERSATZ: Der Ersatztext.FLAGS: Zusätzliche Optionen, z.B.gfür globales Ersetzen.
d : Löschen
Löscht Zeilen, die dem Muster entsprechen.
sed '/Muster/d' DATEI/Muster/d: Löscht Zeilen mit dem Muster “Muster”.
a : Anfügen (append)
Fügt nach der aktuellen Zeile Text hinzu.
sed '/Muster/a Text zum Anfügen' DATEI/Muster/a Text: Fügt “Text” nach Zeilen mit “Muster” an.
i : Einfügen (insert)
Fügt vor der aktuellen Zeile Text hinzu.
sed '/Muster/i Eingefügter Text' DATEI/Muster/i Text: Fügt “Text” vor Zeilen mit “Muster” ein.
p : Ausgeben (print)
Gibt Zeilen aus, kann mit -n kombiniert werden.
sed -n '/Muster/p' DATEIPraktische Beispiele mit Erläuterungen
Beispiel 1: Einfaches Ersetzen
Ersetze das erste Vorkommen von “Apfel” durch “Birne” in jeder Zeile.
sed 's/Apfel/Birne/' datei.txts/Apfel/Birne/: Ersetzt “Apfel” mit “Birne”.- Ohne Flag
gwird nur das erste Vorkommen pro Zeile ersetzt.
Beispiel 2: Globales Ersetzen
Ersetze alle Vorkommen von “Apfel” durch “Birne”.
sed 's/Apfel/Birne/g' datei.txtg: Steht für “global”, ersetzt alle Vorkommen.
Beispiel 3: Ersetzen mit Regex
Ersetze alle Zahlen durch ”#“.
sed 's/[0-9]/#/g' datei.txt[0-9]: Regulärer Ausdruck für Ziffern von 0 bis 9.#/: Ersetzt durch ”#“.
Beispiel 4: Zeilen mit Muster löschen
Lösche alle Zeilen, die das Wort “Fehler” enthalten.
sed '/Fehler/d' datei.txt/Fehler/d: Löscht Zeilen mit “Fehler”.
Beispiel 5: Zeilen zwischen Mustern ausgeben
Gibt Zeilen zwischen “START” und “ENDE” aus.
sed -n '/START/,/ENDE/p' datei.txt-n: Unterdrückt die Standardausgabe./START/,/ENDE/p: Gibt Zeilen von “START” bis “ENDE” aus.
Beispiel 6: Text nach Muster einfügen
Fügt nach jeder Zeile mit “Kapitel” den Text ”= Ende des Kapitels =” ein.
sed '/Kapitel/a === Ende des Kapitels ===' buch.txt/Kapitel/a: Zielmuster “Kapitel”, fügt danach Text an.
Beispiel 7: In-Place-Editierung mit Backup
Ersetzt “foo” durch “bar” und erstellt eine Backup-Datei mit der Endung .bak.
sed -i.bak 's/foo/bar/g' datei.txt-i.bak: Führt In-Place-Editierung durch und sichert Original alsdatei.txt.bak.s/foo/bar/g: Ersetzt alle Vorkommen von “foo” mit “bar”.
Beispiel 8: Mehrere Ersetzungen nacheinander
Ersetzt “Apfel” durch “Orange” und “Banane” durch “Traube”.
sed -e 's/Apfel/Orange/g' -e 's/Banane/Traube/g' obst.txt-e: Ermöglicht Angabe mehrerer Befehle.- Erster Befehl: Ersetzt “Apfel” mit “Orange”.
- Zweiter Befehl: Ersetzt “Banane” mit “Traube”.
Reguläre Ausdrücke in sed
sed unterstützt das volle Spektrum regulärer Ausdrücke.
Zeichenklassen
[a-z]: Kleinbuchstaben a bis z.[A-Z]: Großbuchstaben A bis Z.[0-9]: Ziffern 0 bis 9.
Sonderzeichen
.: Beliebiges einzelnes Zeichen.*: Vorheriges Element null- oder mehrfach.^: Anfang der Zeile.$: Ende der Zeile.
Beispiel: Zeilen, die mit “Test” beginnen
sed -n '/^Test/p' datei.txt^Test: Muster beginnt am Zeilenanfang mit “Test”.
Beispiel: Zeilen, die auf Punkt enden
sed -n '/\.$/p' datei.txt\.$: Escaped den Punkt.und matcht Zeilen, die mit.enden.
Zusammenfassung der Flags beim Ersetzen
g: Globales Ersetzen in der Zeile.p: Druckt die Zeile nach der Ersetzung.i: Ignoriert Groß-/Kleinschreibung.
Beispiel mit Flags
Ersetzt “Test” durch “Prüfung”, ignoriert Groß-/Kleinschreibung und druckt die Ergebnisse.
sed -n 's/Test/Prüfung/gi;p' datei.txti: Ignoriert Fälle wie “test”, “Test”, “TEST”.p: Gibt die Zeilen nach der Ersetzung aus.-n: Unterdrückt sonstige Ausgaben, so dass nur geänderte Zeilen ausgegeben werden.