Kategorie

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 0      

sed 1

sa sb sc sd se sf sg sh si sj sk sl sm
sn so sp sq sr ss st su sv sw sx sy sz

Sed

sed ist ein Computerprogramm. Es wurde bekannt als Unix-Werkzeug, mit dem Textdateien geändert werden können. sed ist ein nicht-interaktiver Editor, der die Bearbeitung von Textdateien von der Kommandozeile aus ermöglicht. "sed" steht für "Stream EDitor".

Die sed-Befehle orientieren sich teilweise an denen des zeilenorientierten Texteditors ed.

Sed liest eine Eingabedatei Zeile für Zeile, und gibt jede Zeile entsprechend vorgegebener Regeln verändert wieder aus.

Eine typische Anwendung ist das Ersetzen von Ausdrücken:

sed -e 's/alt/neu/g' Eingabedatei > Ausgabedatei

In diesem Beispiel ist durch das '-e' angedeutet, dass der nachfolgende Text die Veränderungsregel angibt. Die Veränderungsregel 's/alt/neu/g' besagt, dass in jeder Zeile der Eingabedatei die Zeichenfolge 'alt' durch die Zeichenfolge 'neu' zu ersetzen ist. Das führende 's' bedeutet, dass eine Zeichen-Ersetzung (substitution) stattfinden soll. Das 'g' am Ende gibt vor, dass die Veränderung global, d.h. für alle Vorkommen in der Zeile, vorgenommen werden soll.

Auch das Ersetzen von mehrfachen Leerzeichen durch ein einziges ist möglich:

sed -e 's/ \\+/ /g' Eingabedatei > Ausgabedatei
Der Trick daran ist, dass die gesuchte Zeichenfolge nicht immer 1:1 übernommen werden, sondern vielmehr eine Regular Expression darstellt. In diesem Falle steht das '\\+' für ein- oder mehrmals das vorherige Zeichen, womit nicht nur ein Leerzeichen, sondern auch mehrere hintereinander ersetzt werden.

In der alten oder der neuen Zeichenfolge bereits ein '/' vorkommen behilft man sich statt des '/' im obigen Beispiel mit einem anderen Sonderzeichen:

sed -e 's!/tmp/!!'
ersetzt alle Vorkommen von '/tmp/' durch - nichts, daher die zwei '!' direkt nebeneinander.

Man kann sed auch (anstatt grep) dazu benutzen, um alle Zeilen einer Datei auszudrucken, die einem bestimmten Muster entsprechen:

sed -n -e '/einMuster/p' eingabeDateiName
Die Option '-n' gibt dabei an, dass sed nichts ausgeben soll, wenn es nicht durch den 'p'-Befehl explizit gefordert wird. Ohne diese kopiert sed automatisch jede Zeile der Eingabedatei in die Ausgabedatei.

Löschen aller Zeilen, die leer sind:

sed -e '/^ *$/d' Eingabedatei > Ausgabedatei
Der Befehl d bedeutet, dass die betreffende Zeile gelöscht werden soll.

Diese Beispiele zeigen einen typischen Einsatzbereich von sed: Einfache Aufgaben, die durch kurze Regeln beschreibbar sind. Diese Regeln erlauben weiterhin den Einsatz Regulärer Ausdrücke, die (u.a.) durch sed bekannt geworden sind.

Weiter kann man die Regeln durch eine einfache Skriptsprache auch zu größeren Programmen zusammenfassen. Sed's Programmiersprache kennt zwar keine Variabeln und hat nur einfache Vergleichsmöglichkeiten und einen Goto-Befehl; sie ist aber trotzdem turing-äquivalent.

Für komplexere Aufgaben werden gewöhnlich awk oder Perl, oft in Kombination mit anderen Programmierwerkzeugen, benutzt.

Das GNU-Projekt macht eine Version von sed als Freie Software auf jedem Betriebssystem verfügbar, das über einen C-Compiler verfügt.

Weblinks


SED ist die Abkürzung für Sozialistische Einheitspartei Deutschlands.

Impressum

Datenschutzerklärung