sed, ein mächtiger Text Editor

sed ist ein Kommandozeilenwerkzeug, hauptsächlich auf Linuxsystemen eingesetzt. Im Gegensatz zu den meisten Editoren, wie vi oder nano, bewegt man sich nicht mit einem Cursor in einem Text und verändert diesen, sondern man führt Befehle aus, die einzelne Zeilen manipulieren.

Jedem sed Befehl kann ein Bereich vorangestellt werden. Zum Beispiel bezieht sich der Bereich „64, 123“ Zeilen 64 bis 123. Der Befehl zum Ersetzen  von Abschnitten in Zeilen ist „s“. Dem Befehl werden die Parameter mit dem Zeichen „/“ umschlossen angehängt. Der erste Parameter ist ein regulärer Ausdruck, der ersetzt werden soll. Der zweite Parameter ist der Text, der eingefügt werden soll

Mit dem Kommandozeilenbefehl

sed '64, 123s/^/\/\//' main.cpp

werden den Zeilen 64 bis 123 der Datei der Text „//“ vorangestellt. Der erste Parameter ist „^“, der den Zeilenanfang bezeichnet. Der zweite Parameter ist „\/\/“, der maskiert den Text „//“ repräsentiert. Jedoch wird hierbei die Änderung nicht direkt in die Datei geschrieben sondern der Inhalt der verändert Datei wird auf der Standardausgabe ausgegeben.

Mit „{}“ lassen sich Befehle gruppieren. Mit „>“ wird die Ausgabe in eine Datei umgeleitet. Mit

sed '64,123 {s/^/\/\//; s/$/ \/\/ TS/}' main.cpp > new_main.cpp

werden den Zeilen 64 bis 123 der Text „//“ vorangestellt und der Text „// TS“ angehängt. Das Ergebnis wird in die Datei „new_main.cpp“ geschrieben.

Eine weitere Möglichkeit, einzelne Zeilen zu bearbeiten, ist das Adressieren. Dazu wird dem Befehl ein mit dem Zeichen „/“ umschlossener regulärer Ausdruck vorangestellt. Mit dem Zeichen „!“ lässt sich die Auswahl invertieren. Mit

sed '34, 57 {/^$/!{s/^/\/\/ /; s/$/ \/\/ TS/}}' main.cpp > new_main.cpp

wird allen Zeilen im Bereich von Zeile 34 bis Zeile 57, die nicht leer sind, der Text „// “ vorangestellt und der Text “ // TS“ angehängt.