Editor di flusso: rami

È possibile creare rami utilizzando il comando t. Iltil comando salta all'etichetta solo se il precedente comando sostitutivo ha avuto successo. Prendiamo lo stesso esempio del capitolo precedente, ma invece di stampare un solo trattino (-), ora stampiamo quattro trattini. L'esempio seguente illustra l'utilizzo dit comando.

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

Quando il codice precedente viene eseguito, produrrà il seguente risultato.

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

Nell'esempio sopra, i primi due comandi sono autoesplicativi. Il terzo comando definisce un'etichettaLoop. Il quarto comando antepone il trattino (-) se la riga contiene la stringa "Paulo" e ilt Il comando ripete la procedura finché non ci sono quattro trattini all'inizio della riga.

Per migliorare la leggibilità, ogni comando SED viene scritto su una riga separata. Altrimenti, possiamo scrivere un SED di una riga come segue:

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

Quando il codice precedente viene eseguito, produrrà il seguente risultato.

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