可以用t命令创建分支。 t 命令跳转到标签,只有在以前的替换命令是成功的。让我们以前面的章节同样的例子,但不是打印一个连字符(- ),现在我们印刷四连字符。下面的例子演示了 t 命令的用法。
[jerry]$ sed -n ' h;n;H;x s/\n/, / :Loop /Paulo/s/^/-/ /----/!t Loop p' books.txt
当执行上面的代码,就会产生下面的结果。
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
我们已经讨论了在前面的章节中的第一个命令。第三个命令定义一个标签循环。第四命令上前置的连字符( - ),如果该行包含字符串“Paulo”和t命令重复这一过程,直到有四个连字符位于行的开头。
为了提高可读性,每个 sed 命令写在一个单独的行。否则,我们可以写一行一个 sed 如下:
[jerry]$ sed -n 'h;n;H;x; s/\n/, /; :Loop;/Paulo/s/^/-/; /----/!t Loop; p' books.txt
当执行上面的代码,就会产生下面的结果。
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