Éditeur de flux - Branches
Les branches peuvent être créées à l'aide de la commande t. letLa commande passe à l'étiquette uniquement si la commande de substitution précédente a réussi. Prenons le même exemple que dans le chapitre précédent, mais au lieu d'imprimer un seul tiret (-), nous imprimons maintenant quatre tirets. L'exemple suivant illustre l'utilisation dut commander.
[jerry]$ sed -n '
h;n;H;x
s/\n/, /
:Loop
/Paulo/s/^/-/
/----/!t Loop
p' books.txt
Lorsque le code ci-dessus est exécuté, il produira le résultat suivant.
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
Dans l'exemple ci-dessus, les deux premières commandes sont explicites. La troisième commande définit une étiquetteLoop. La quatrième commande ajoute le tiret (-) si la ligne contient la chaîne "Paulo" et let La commande répète la procédure jusqu'à ce qu'il y ait quatre traits d'union au début de la ligne.
Pour améliorer la lisibilité, chaque commande SED est écrite sur une ligne distincte. Sinon, nous pouvons écrire un SED à une ligne comme suit:
[jerry]$ sed -n 'h;n;H;x; s/\n/, /; :Loop;/Paulo/s/^/-/; /----/!t Loop; p' books.txt
Lorsque le code ci-dessus est exécuté, il produira le résultat suivant.
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