Home   Profil   Fun
#62 Linux  06.04.2009

Der Befehl sed


Gib Zeile 9 einer Datei aus.
sed -n '9p' file1.txt

Gib den Inhalt einer Datei aus ohne die Zeilen 1 bis 3.
sed '1,3d' file2.txt

Gib Zeile 1 und Zeile 3 einer Datei aus.
sed -n -e '1p' -e '3p' file3.txt

Gib den Inhalt von tesfile.txt aus, aber ändere die Ausgabe so ab, dass jede Zeile mit einem zusätzlichen "string1" beginnt. Wenn die Datei mit einem newline endet findet man am Ende der Datei entsprechend einen "zusätzlichen" String "string1". Man könnte hier ein $1 in dem Beispiel erwarten, aber dies funktioniert nicht, es muss \1 sein. Die Klammern müssen escaped werden, sodass es am Ende \(.*\) ist.
sed 's/\(.*\)/string1\1/' ./testfile.txt

sed gibt den Inhalt der Datei geändert nach stdout aus. Die Datei selbst bleibt unverändert, nur die Ausgabe wird manipuliert. Möchte man jedoch den Inhalt der Datei direkt ändern nimmt man -i und -e. Das Beispiel löscht Zeile 1 bis 3 der Datei.
sed -i -e '1,3d' file1.txt

Entferne alle Zeilen einer Datei, die Leerzeichen, Tabs oder newline enthalten.
sed -i -e '/^\s*$/d' testfile.txt

Entferne alle Zeilen einer Datei die mit # beginnen (Kommentarzeilen)
sed -i -e '/^#.*$/d' testfile.txt

Entferne alle Zeilen einer Datei, die mit # oder mit Einrückung gefolgt von # beginnen.
sed -i -e '/^\s*#.*$/d' testfile.txt