Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier. 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 Kommandozeile aus ermöglicht. "sed" steht für "Stream
Die sed-Befehle orientieren sich teilweise an des zeilenorientierten Texteditors ed.
Sed liest eine Eingabedatei Zeile für und gibt jede Zeile entsprechend vorgegebener Regeln wieder aus.
Eine typische Anwendung ist das Ersetzen Ausdrücken:
sed -e 's/alt/neu/g' Eingabedatei > Ausgabedatei
In diesem Beispiel ist durch das angedeutet dass der nachfolgende Text die Veränderungsregel Die Veränderungsregel 's/alt/neu/g' besagt dass in jeder der Eingabedatei die Zeichenfolge 'alt' durch die 'neu' zu ersetzen ist. Das führende 's' dass eine Zeichen-Ersetzung (substitution) stattfinden soll. Das am Ende gibt vor dass die Veränderung d.h. für alle Vorkommen in der Zeile werden soll.
Auch das Ersetzen von mehrfachen Leerzeichen ein einziges ist möglich:
sed -e 's/ +/ /g' Eingabedatei Ausgabedatei
Der Trick daran ist daß die Zeichenfolge nicht immer 1:1 übernommen werden sondern eine Regular Expression darstellt. In diesem Falle steht das für ein- oder mehrmals das vorherige Zeichen womit nicht nur ein Leerzeichen sondern mehrere hintereinander ersetzt werden.
In der alten oder der neuen bereits ein '/' vorkommen behilft man sich des '/' im obigen Beispiel mit einem Sonderzeichen:
sed -e 's!/tmp/!!
ersetzt alle Vorkommen von '/tmp/' durch nichts daher die zwei '!' direkt nebeneinander.
Man kann sed auch (anstatt grep) benutzen um alle Zeilen einer Datei auszudrucken einem bestimmten Muster entsprechen:
sed -n -e '/einMuster/p' eingabeDateiName
Die Option '-n' gibt dabei an sed nichts ausgeben soll wenn es nicht den 'p'-Befehl explizit gefordert wird. Ohne diese sed automatisch jede Zeile der Eingabedatei in Ausgabedatei.
Löschen aller Zeilen die leer sind:
sed -e '/^ *$/d' Eingabedatei >
Der Befehl d bedeutet dass die betreffende Zeile gelöscht soll.
Diese Beispiele zeigen einen typischen Einsatzbereich sed: Einfache Aufgaben die durch kurze Regeln sind. Diese Regeln erlauben weiterhin den Einsatz Regulärer Ausdrücke die (u.a.) durch sed bekannt geworden
Weiter kann man die Regeln durch einfache Skriptsprache auch zu größeren Programmen zusammenfassen. Programmiersprache kennt zwar keine Variabeln und hat einfache Vergleichsmöglichkeiten und einen GOTO Befehl; sie ist aber trotzdem turing-äquivalent .
Für komplexere Aufgaben werden gewöhnlich awk Perl oft in Kombination mit anderen Programmierwerkzeugen
Das GNU-Projekt macht eine Version von sed als Freie Software auf jedem Betriebssystem verfügbar das über C-Compiler verfügt.