Sed


Der Stream-Editor „sed“ ist ein Kommandozeilen Editor für die automatische Manipulation von Textstreams. Diese können aus einer Datei oder einer Pipe kommen. Hierbei liest „sed“ den Stream zeilenweise ein und manipuliert den Text nach einem Muster. Wenn keine Datei angegeben wird, liest „sed“ von der Standardeingabe ein und gibt das Ergebnis an STDOUT wieder aus. Um Änderungen zu speichern kann die Ausgabe von „sed“ in eine Datei umgeleitet werden.


Syntax:

  • sed [opt] kommando [< [script][datei] >] [ziel]




Optionen:

  • -n ⇒ Unterdrückt die automatische Ausgabe des Ergebnisses. Ausgaben benötigt dann den 'p' Befehl.
  • -e ⇒ Wird ein einziges Kommando verwendet Optional, bei mehreren Kommandos in einer Zeile muß -e jedem Kommando vorangestellt werden.
  • -f [scriptdatei] ⇒ Script-Datei enthält Kommandos für sed.
  • -g ⇒ Sed reagiert im Normalfall nur auf das erste Vorkommnis eines Musters. Mit -g gelten alle folgenden Kommandos als Global.
  • --follow-symlinks ⇒ Symbolischen Links bei der Bearbeitung an Ort und Stelle folgen.
  • -i[endung] ⇒ Nur die Textdatei wird verändert, das Ergebnis wird nicht auf der Standardausgabe ausgegeben (erstellt Sicherung, falls Endung angegeben).
  • -l [n] ⇒ Gibt die gewünschte Zeilenumbruchlänge [n] an.
  • --posix ⇒ Deaktiviert alle GNU-Erweiterungen.
  • -r ⇒ Verwendet erweiterte reguläre Ausdrücke.
  • -s ⇒ Betrachtet Dateien getrennt statt als einzigen langen Strom.
  • -u ⇒ Lädt minimale Datenmenge aus den Eingabedateien und schreibt die Ausgabepuffer öfter.
  • --help ⇒ Hilfe anzeigen und beenden.
  • --version ⇒ Versionsinformation anzeigen und beenden.




Bei der Ausgabe in eine Datei darf die Zieldatei nicht mit der Quelldatei identisch sein, denn bei der Ausführung eines einfachen Redirektors würde „sed“ die Datei zuerst löschen und dann neu anlegen, die Datei wäre leer. Mit der Option [-i] --in-place wird keine Ausgabe erzeugt, sondern gleich die Quelldatei bearbeitet.






y


Das Sed Kommando [y] übersetzt die Zeichen im Musterbereich [quelle] in die Zeichen [ziel].


Syntax:

  • y/quelle/ziel/




Beispiel:

sed 'y/,/;/g' kommadatei > semikolondatei

Ersetzt Kommas in Semikolons.



d


Das Sed Kommando [d] (Delete), löscht den Musterbereich. Beginnt den nächsten Zyklus.


Syntax:

  • /muster/d




Beispiele:

sed -e '/^$/d' -e '/^#/d' /etc/datei

Hier werden Leerzeilen und Zeilen mit # am Anfang gelöscht.


sed '24,42d' datei > dateigekuerzt

Bei der Zeichenkette handelt es sich um Zeilennummern. Hier werden die Zeilen [1-23] und [43] bis Ende von „datei“ in die Datei „dateigekuerzt“ geschrieben.


sed '24,42!d' datei > dateigekürzt

Die Ausgabe kann auch mit [!] Invertiert werden. Es werden die Zeilen 24-42 ausgegeben.



s


Das Kommando [s] steht für Substitution und dient zum suchen und ersetzen von [muster].


Syntax:

  • s/[suchmuster]/[ersetzenmuster]/




Beispiele:

sed 's/ue/ü/' datei

Hier wird das erste in einer Zeile gefundene [ue] in ein [ü] umgewandelt.


sed 's/ue/ü/g' datei

Dieses Kommando kann auch global angewendet werden.


Sollten mehrere Kommandos an „sed“ übergeben werden, kann auch eine Scriptdatei verwendet werden, diese wird dann zeilenweise abgearbeitet.

user@home:~/Desktop$ cat script1
s/ä/\&auml\;/g;
s/Ä/\&auml\;/g;
s/ö/\&ouml\;/g;
s/Ö/\&Ouml\;/g;
s/ü/\&uuml\;/g;
s/Ü/\&Uuml\;/g;
s/ß/\&szlig\;/g;


sed -f script1 umltext > htmltext

Dieses Script wandelt im Text ä in &auml; um.


Zu beachten ist, dass sich die Zeilennummern verschieben können.





Cloud