Rhetos
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 9 Ω


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 ↗