Kapitel 9. Kurzreferenz

Diese Kurzreferenz kann und will nicht die man- oder info-page zu sed ersetzen, sondern ist nur als eine Gedächtnisstütze gedacht.

Adressen

sed kann mehrere Dateien abarbeiten, wenn man diese als Argumente übergibt. Diese Dateien werden als ein einziger Input-Stream behandelt. Achtung deshalb bei Zeilenangaben. Die Adresse '1' gibt deshalb nicht die erste Zeile in jeder Datei an, sondern die erste Zeile im Input-Stream; der nachfolgende Befehl wird also nur einmal ausgeführt.

Tabelle 9.1. Adressen

AdresseBeschreibung
n Selektiert die Zeile n im Eingabestream.
$ Letzte Zeile im Input-Stream.
/regex/ Alle Zeilen, auf die regex passt. Alternativ kann auch '\%regex%' geschrieben werden, wobei '%' ein beliebiges Zeichen ist.
adresse1,adresse2 Adressbereich: Alle Zeilen zwischen adresse1 und adresse2, einschließlich der beiden Adressen.
adresse! Alle Zeilen ausschließlich der in adresse angegebenen Zeilen.


Kommandos

Tabelle 9.2. Allgemeine Kommandos

KommandoAnzahl AdressenBeschreibung
#0Kommentar, alle nachfolgenden Zeichen bis zum Newline werden nicht als Programmcode interpretiert.
{0-2Beginnt einen Block, der mehrere Kommandos beinhalten kann. Muss mit } abgeschlossen werden. Auf jedes Kommando innerhalb des Blocks muss ein semicolon ';' folgen.
=0-1Gibt die aktuelle Position im Input-Stream aus.
q0-1Beendet das Programm. Der pattern space wird nur dann geschrieben, wenn die Option -n nicht gesetzt wurde.
l0-2Gibt den pattern space in einer unmissverständlichen Form aus, die an die ANSI C-Screibweise angelehnt is. Sehr nützlich zur Fehlersuche.
d0-2Löscht den pattern space und startet sofort einen neuen Zyklus.
p0-2Schreibt den pattern space nach stdout. (wird normalerweise nur in Verbindung mit der Option -n verwendet.)
n0-2Schreibt den pattern space (wenn -n nicht gesetzt ist) und ersetze den pattern space mit der nächsten Zeile. Wenn keine Zeile mehr zu lesen ist, beende das Programm.
s/regex/rpl/flg0-2Ersetzt regex durch rpl. Null oder mehrere flg geben an, wie das geschehen soll: 'g' ersetzt alle Zeichenketten in einer Zeile, auf die regex passt, 'p' führt eine Substitution durch und schreibt den pattern space, 'nummer' ersetzt nur die nummer-te Fundstelle.
y/src/rpl/flg0-2Ersetzt jedes Zeichen im pattern space, das in src vorkommt, mit dem entsprechenden Zeichen in rpl.


Tabelle 9.3. Sprung-Kommandos

KommandoAnzahl AdressenBeschreibung
: label0Definiert das Sprungziel label. Siehe Kommandos b oder t, wie man Labels anspringt.
b label0-2Branch; unbedingter Sprung.
t label0-2Bedingter Sprung. Es wird zum label gesprungen, wenn auf den aktuellen pattern space eine s///- oder y///-Substitution erfolgt wurde.


Tabelle 9.4. Kommandos im Zusammenhang mit dem Hold-buffer

KommandoAnzahl AdressenBeschreibung
D0-2Löscht den Text im pattern space bis zum ersten Newline. Ist noch Text im pattern space enthalten, starte einen Zyklus mit diesem Text, ansonsten starte einen normalen Zyklus.
N0-2Hängt eine Newline an den pattern space an, gefolgt von der nächsten Zeile des Inputs. Ist das Ende der Datei erreicht, wird das Programm abgebrochen, ohne weitere Befehle abzuarbeiten.
P0-2Gibt den pattern space bis zum ersten Newline aus.
h0-2Ersetzt den Inhalt des hold space mit dem des pattern space.
H0-2Hängt ein Newline an den hold space, gefolgt vom Inhalt des pattern space an.
g0-2Ersetzt den Inhalt des pattern space mit dem des hold space.
G0-2Hängt ein Newline an den pattern space, gefolgt vom Inhalt des hold space an.
x0-2Tauscht den Inhalt von pattern space und hold space aus.


Daneben gibt es noch weitere Befehle wie a, i, c, r, w. Der Leser sei diesbezüglich mit einem freundlichen RTFM auf die man-page verwiesen.