Stream Editor - Zweige

Zweige können mit dem Befehl t erstellt werden. DastBefehl springt nur dann zur Bezeichnung, wenn der vorherige Ersatzbefehl erfolgreich war. Nehmen wir das gleiche Beispiel wie im vorherigen Kapitel, aber anstatt einen einzelnen Bindestrich (-) zu drucken, drucken wir jetzt vier Bindestriche. Das folgende Beispiel zeigt die Verwendung vont Befehl.

[jerry]$ sed -n ' 
h;n;H;x 
s/\n/, / 
:Loop 
/Paulo/s/^/-/ 
/----/!t Loop 
p' books.txt

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt.

A Storm of Swords, George R. R. Martin 
The Two Towers, J. R. R. Tolkien 
----The Alchemist, Paulo Coelho 
The Fellowship of the Ring, J. R. R. Tolkien 
----The Pilgrimage, Paulo Coelho 
A Game of Thrones, George R. R. Martin

Im obigen Beispiel sind die ersten beiden Befehle selbsterklärend. Der dritte Befehl definiert eine BezeichnungLoop. Der vierte Befehl stellt einen Bindestrich (-) voran, wenn die Zeile die Zeichenfolge "Paulo" und die enthältt Der Befehl wiederholt die Prozedur, bis am Anfang der Zeile vier Bindestriche stehen.

Um die Lesbarkeit zu verbessern, wird jeder SED-Befehl in eine separate Zeile geschrieben. Andernfalls können wir eine einzeilige SED wie folgt schreiben:

[jerry]$ sed -n 'h;n;H;x; s/\n/, /; :Loop;/Paulo/s/^/-/; /----/!t Loop; p' books.txt

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt.

A Storm of Swords, George R. R. Martin 
The Two Towers, J. R. R. Tolkien 
----The Alchemist, Paulo Coelho 
The Fellowship of the Ring, J. R. R. Tolkien 
----The Pilgrimage, Paulo Coelho 
A Game of Thrones, George R. R. Martin