Zum Inhalt springen

Sed (Unix)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 14. August 2002 um 06:22 Uhr durch Hannes Hirzel (Diskussion | Beiträge) (Zusätzliches Beispiel: Löschen von Leerzeilen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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.


Kurzanleitung
GNU-Anleitung (englisch)