Bash sed
Unix, Linux
Basiswissen
sed ist ein extrem mächtiger Befehl zur zeilenweisen Bearbeitung von Textdateien. sed wird üblicherweise von einer Kommandozeile (Console, Terminal) oder innerhalb eines Skriptes verwendet. Eine wichtige Einschränkung von sed ist, dass es keine einfache Methode gibt, Zeichenfolgen über zwei oder mehr Zeilen hinweg zu erkennen oder zu verändern. Sed arbeitet zunächst immer nur innerhalb einer Zeile.
Substitution in einer Datei
sed -i s/v/xos/g datei.txt
Tauscht in der Datei datei.txt alle Buchstaben v gegen die Silbe xos aus. Das -i bewirkt, dass die Veränderungen in der Datei selbst bleibend vorgenommen werden.
Substitution in mehreren Dateien
sed -i s/v/os/g *txt
Wie oben aber diesmal für alle Textdateien im Arbeitsverzeichnis
Neue Zeile einfügen
sed -i '2 i Hallo' file.txt
Fügt eine neue Zweite Zeile in die Datei filex.txt ein.
Der Inhalt der Zeile ist: Hallo
Zeichenfolgen löschen
sed /zeichenfolge/d file
d ist hier der Lösch-Befehl: findet alle Zeilen mit "zeichenfolge", löscht sie und schreibt das Ergebnis in die Standard-Ausgabe.
Von ... bis löschen
sed -r s/'(+.*)+'//g datei.txt
Löscht alle Klammern mit Inhalt
Leerzeichen zu Zeilenumbruch
sed -e s/' '/"n"/g datei.txt
Wandelt Leerzeichen in Zeilenumbruch um
Nur Zeilen mit bestimmter Zeichenfolge
sed '/dauer/s/x/y/g' datei.txt
Wirkt nur auf Zeilen, die "dauer" enthalten.
Auf alle Zeilen, außer ...
sed '/dauer/!s/x/y/g' datei.txt
Wirkt nicht auf Zeilen, die "dauer" enthalten.
Von ... bis ersetzen
sed 's/Here(.*)String/1/g'
Text von "Here" bis "String" wird durch "1" ersetzt.
Neue Zeilen einfügen
sed '3 a irgendein text' FILE.txt
Der Text wird als neue Zeile nach der bereits vorhandenen dritten Zeile in der Datei FILE.txt eingefügt.
Schreibe die nte Zeile
sed '3!d' text.txt
Gibt die 3 Zeile der Datei text.txt aus.
Mehr dazu?
Eine große Anzahl fertiger sed-Skripte sind auf einer anderen Seite zusammengefasst. Sie stehen auf Bash sed-one-line scripts ↗