12.3 Adressen
Adressen sind, wie eben erwähnt, entweder fixe Zeilen, ganze Bereiche oder aber Zeilen, die auf einen bestimmten regulären Ausdruck passen. Hier einige Beispiele, wie Sie bestimmte Adressen definieren und welche Zeilen Sie damit selektieren. Zur Demonstration wird immer die Option –n verwendet, mit der Sie den Default-Output von sed abschalten, und das Kommando p, mit dem Sie die selektierte(n) Zeile(n) auf dem Bildschirm ausgeben lassen können.
Nur die vierte Zeile der Datei file.dat selektieren und ausgeben:
you@host > sed -n '4p' file.dat
Die Zeilen 4, 5, 6 und 7 aus der Datei file.dat selektieren und ausgeben. Geben Sie für die »bis«-Adresse einen niedrigeren Wert an als für die »von«-Adresse, so wird dieser Wert ignoriert:
you@host > sed -n '4,7p' file.dat
Hiermit werden alle Zeilen von Zeile 4 bis zum Ende der Datei ausgegeben – das Dollarzeichen steht für die letzte Zeile:
you@host > sed -n '4,$p' file.dat
Damit werden alle Zeilen selektiert, in denen sich das Wort »wort« befindet und ausgegeben:
you@host > sed -n '/wort/p' file.dat
Hier werden alle Zeilen ausgegeben, welche die Zeichenfolge »197« und eine beliebige Zahl von 0 bis 9 enthalten (1970, 1971 ... 1979):
you@host > sed -n '/197[0–9]/p' file.dat
Neben den Möglichkeiten
[Adresse1, Adresse2]Kommando
und
[Adresse]Kommando
gibt es auch noch eine dritte Möglichkeit, wie Sie Adressen angeben können. Man kann nämlich durch die Verwendung von geschweiften Klammern mehrere Kommandos zusammenfassen:
Adresse{
Kommando1
Kommando2
}
Oder auch als Einzeiler:
Adresse{ Kommando1 ; Kommando2 ; ... }
Bspw.:
you@host > sed -n '1{p ; s/USA/ASU/g ; p }' mrolympia.dat
Larry Scott USA 1965 1966
Larry Scott ASU 1965 1966
Hiermit bearbeiten Sie die erste Zeile der Datei mrolympia.dat. Zuerst geben Sie diese Zeile aus, anschließend führen Sie mit s/.../.../g eine globale (g) Ersetzung mittels s (substitute) der Zeichenfolge »USA« durch »ASU« durch und geben daraufhin diese Zeile (ggf. verändert) nochmals aus. Natürlich können Sie eine solche Ersetzung auch ohne Angabe einer Adresse auf die ganze Datei machen:
you@host > sed -n '{/USA/p ; s/USA/ASU/g ; /ASU/p }' mrolympia.dat
Da hierbei keine direkte Adressierung verwendet wird, können Sie das Ganze auch gleich ohne geschweifte Klammern machen:
you@host > sed -n '/USA/p ; s/USA/ASU/g ; /ASU/p' mrolympia.dat
Natürlich können Sie auch mit den geschweiften Klammern einen Adressbereich verwenden:
you@host > sed -n '1,5{/USA/p ; s/USA/ASU/g ; /ASU/p }' \
> mrolympia.dat
Hierbei wurden die Zeilen 1 bis 5 zusammengefasst, um alle Kommandos in den geschweiften Klammern darauf auszuführen.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.
|