Stream Editor - Ramas
Las ramas se pueden crear usando el comando t. lostcomando salta a la etiqueta solo si el comando sustituto anterior fue exitoso. Tomemos el mismo ejemplo que en el capítulo anterior, pero en lugar de imprimir un solo guión (-), ahora imprimimos cuatro guiones. El siguiente ejemplo ilustra el uso de lat mando.
[jerry]$ sed -n '
h;n;H;x
s/\n/, /
:Loop
/Paulo/s/^/-/
/----/!t Loop
p' books.txt
Cuando se ejecuta el código anterior, producirá el siguiente resultado.
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
En el ejemplo anterior, los dos primeros comandos se explican por sí mismos. El tercer comando define una etiquetaLoop. El cuarto comando antepone un guión (-) si la línea contiene la cadena "Paulo" y elt comando repite el procedimiento hasta que hay cuatro guiones al principio de la línea.
Para mejorar la legibilidad, cada comando SED se escribe en una línea separada. De lo contrario, podemos escribir una SED de una sola línea de la siguiente manera:
[jerry]$ sed -n 'h;n;H;x; s/\n/, /; :Loop;/Paulo/s/^/-/; /----/!t Loop; p' books.txt
Cuando se ejecuta el código anterior, producirá el siguiente resultado.
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