Ветви могут быть созданы с помощью команды t. Команда t переходит на метку, только если предыдущая команда замены была успешной. Давайте возьмем тот же пример, что и в предыдущей главе, но вместо того, чтобы печатать один дефис (-), теперь мы печатаем четыре дефиса. В следующем примере показано использование команды t .
[jerry]$ sed -n ' h;n;H;x s/\n/, / :Loop /Paulo/s/^/-/ /----/!t Loop p' books.txt
Когда приведенный выше код будет выполнен, он даст следующий результат.
Буря мечей, Джордж Р. Р. Мартин Две башни, Дж. Р. Р. Толкиен ---- Алхимик, Пауло Коэльо Братство Кольца, JRR Толкиен ---- Паломничество, Пауло Коэльо Игра престолов, Джордж Р. Р. Мартин
В приведенном выше примере первые две команды говорят сами за себя. Третья команда определяет метку Loop . Четвертая команда добавляет дефис (-), если строка содержит строку «Paulo», а команда t повторяет процедуру до тех пор, пока в начале строки не будет четыре дефиса.
Для улучшения читабельности каждая команда SED записана в отдельной строке. В противном случае мы можем написать однострочную SED следующим образом:
[jerry]$ sed -n 'h;n;H;x; s/\n/, /; :Loop;/Paulo/s/^/-/; /----/!t Loop; p' books.txt
Когда приведенный выше код будет выполнен, он даст следующий результат.