Inhaltsverzeichnis
Syntax von sed
sed [-nV] [–quiet] [–silent] [–version] [-eEditorkommando] [-fScriptdatei] [–expression=Editorkommando] [–file=Scriptdatei] [Datei…]
Beschreibung
Der Linux Befehl sed ist ein Editor zur automatischen Textbearbeitung.
Die Bearbeitung erfolgt mit Editorkommandos, die dem sed in einer separaten Scriptdatei oder direkt in der Kommandozeile übergeben werden. Um in der Kommandozeile mehrere Editorkommandos zu übergeben, kann die -e Option mehrfach verwendet werden. Die Editorkommandos können auch durch ein Semikolon getrennt werden. Wird nur ein einziges Editorkommando in der Kommandozeile übergeben, kann die Kennzeichnung mit der -e Option auch weggelassen werden. Damit die Shell keine Veränderungen an der Zeichenkette mit dem Editorkommando vornimmt, muß sie in Hochkommata eingeschlossen werden.
Eine Scriptdatei kann beliebig viele Editorkommandos enthalten, die durch Zeilenende oder Semikolon von einander getrennt werden müssen.
Jedes Kommando besteht aus einem Adreßteil und einem Funktionsteil. Der Adreßteil gibt an, welche Zeilen einer Textdatei mit diesem Kommando bearbeitet werden sollen, und der Funktionsteil beschreibt die Veränderung, die an den im Adreßteil bestimmten Zeilen vorgenommen werden soll. Wenn kein Adreßteil angegeben ist, wird die Funktion mit jeder Zeile ausgeführt.
Die Bearbeitung eines Textes erfolgt, indem die Eingabe zeilenweise in einen Arbeitsspeicher gelesen wird, und dann die Adreßteile aller Editorkommandos der Reihe nach mit dem Text im Arbeitsspeicher verglichen werden. Die Funktionen der passenden Kommandos werden in der Reihenfolge ihres Auftretens ausgeführt. Normalerweise wird nach der Bearbeitung aller Kommandos der Inhalt des Arbeitsspeichers auf die Standardausgabe ausgegeben und danach durch die nächste Eingabezeile ersetzt. Die automatische Ausgabe des Arbeitsspeichers nach jeder Zeile kann mit der Option -n unterdrückt werden.
Zusätzlich zu dem Arbeitsspeicher gibt es noch einen Zwischenspeicher (Puffer), der von verschiedenen Funktionen benutzt werden kann.
Der Arbeitsspeicher kann auch mehrere Zeilen auf einmal enthalten.
Im Adreßteil können die Zeilen entweder durch ihre Zeilennummern, oder durch reguläre Ausdrücke ausgewählt werden. Alle Funktionen außer den a, i, q und = akzeptieren einen Adressbereich, bei dem eine Start- und eine Endadresse durch ein Komma getrennt angegeben werden. Ein Dollarzeichen steht für die letzte Zeile. Wenn eine Endadresse mit einem regulären Ausdruck bezeichnet ist, wird die erste passende Zeile als Bereichsende eingesetzt.
Reguläre Ausdrücke müssen in einfachen Schrägstrichen (Slashes /) eingeschlossen werden. sed benutzt die gleichen Routinen zur Auswertung regulärer Ausdrücke wie emacs oder grep. Darüberhinaus kann auch die an die sed Syntax angelehnte Konstruktion \#Muster\# (mit jedem beliebigen Zeichen für \#) benutzt werden, die wie /Muster/ interpretiert wird.
Im Muster kann auch ein \n vorkommen, das auf das Zeilenende paßt.
Der sed kann folgende Funktionen ausführen:
wird der Inhalt des Arbeitsspeichers von sed in die Standardausgabe geschrieben
- w Datei
- wenn eine Ersetzung stattgefunden hat, wird der Inhalt des Arbeitsspeichers in die Datei geschrieben
- t Marke
- verzweigt zur mit der :Marke versehenen Zeile in der Programmdatei, wenn eine Ersetzung am Inhalt des Arbeitsspeichers vorgenommen wurde, seit die letzte Eingabezeile gelesen wurde, oder seit der letzte t Befehl bearbeitet wurde; wenn keine Marke angegeben ist, wird an das Ende der Programmdatei verzweigt
- w Datei
- schreibt den Inhalt des Arbeisspeichers in die benannte Datei
- x
- vertauscht den Inhalt des Puffers mit dem Arbeitsspeicher
- y/Zeichenkette1/Zeichenkette2/
- vertauscht jedes auftretende Zeichen aus der Zeichenkette1 mit dem entsprechenden Zeichen der Zeichenkette2; die beiden Zeichenketten müssen gleich lang sein
- ! Funktion
- führt die Funktion für alle Zeilen aus, die NICHT in den Bereich passen
- :Marke
- setzt eine Marke für den b und den t Befehl
- {…}
- die von den Klammern eingeschlossenen und durch Zeilenende oder Semikolon getrennten Funktionen werden als Einheit behandelt
- =
- gibt die aktuelle Eingabezeilennummer aus
- \\#
- leitet einen Kommentar ein; alle folgenden Zeichen bis zum Zeilenende werden ignoriert
Optionen
- -n
- gibt nur die Zeilen aus, die explizit (durch die Anweisung p) ausgedruckt werden sollen
- -V
- gibt die Versionsnummer und eine Kurzhilfe aus
- -eZeichenkette
- wendet die Editorbefehle aus Zeichenkette auf den Text an
- -f Datei
- liest die Editorbefehle aus der Datei
Siehe Auch
das LunetIX Linuxhandbuch
Autor
Unbekannt