Sed (Unix)
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".
Sed liest eine Eingabedatei Zeile für Zeile, und gibt jede Zeile entsprechend vorgegebener Regeln verändert wieder aus.
Eine typische Anwendung ist das Ersetzten 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/x/y/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.
Man kann sed auch 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, ausser es wird durch den 'p'-Befehl explizit gefordert. Üblicherweise kopiert sed nämlich jede Eingabezeile in die Ausgabedatei.
Ersetzten von mehrfachen Leerschlägen durch einen einzigen Leerschlag:
sed -e 's/ */ /g' Eingabedatei > 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 Aufgeben, 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.
Bildschirmorientierte Texteditoren unter Unix sind u.a. ed und vi.
Im GNU-Projekt sind Open-Source-Versionen verfügbar, die sed auf jedem Betriebsystem verfügbar machen, das über einen C-Compiler verfügt.
Links