$ (echo hello; echo there) | sed ':a;$!N;s/\n/string/;ta'
hellostringthere
Команда выше sed заменяет новый символ строки строкой «строка». Но я не знаю значения :a;$!N;s/\n/string/;ta в одинарных кавычках. Я знаю среднюю часть s/\n/string/. Но я не знаю функции первой (:a;$!N;) и последней (ta) части.
Для этих команд нет ссылки «человек» (ну, на самом деле это всего лишь «напоминание»), поэтому вам следует проконсультироваться с информационными страницами, в частности «3.7 Команды для« гуру »sed. Также есть предупреждение, что вам следует рассмотреть awk или Perl до этой точки, и они справедливо:
: LABEL [Адреса не разрешены.] Укажите расположение LABEL для команд ветвления. Во всех других отношениях нет-op. в этом конкретном примере он просто создает ярлык, не работает. [F3] можно изменить так, как если бы он был таким же, как t. ; Команды в SCRIPT или SCRIPT-FILE могут быть разделены точками с запятой (`; ') или новыми символами (ASCII 10). В этом случае нужно разделить разные команды, их можно легко заменить новыми строками. $!N Убедитесь, что это не последняя строка. s/\n/string/ выражение вашего регулярного выражения. Здесь нет ничего важного. t LABEL Вставить в LABEL только в том случае, если была успешная s ubstitution, поскольку была прочитана последняя строка ввода или была принята условная ветвь. LABEL может быть опущена, и в этом случае начинается следующий цикл. Это проверяет, где была выполнена подстановка команды (выражение регулярного выражения), и выполняет все, что находится в метке, в этом случае метка a.Если нам нужно объяснить всю команду простым английским языком, это будет равно:
Создайте и сохраните проверку последней строки в метке a, замените все «новые» строки "для string и остановиться, когда проверка метки a верна.