Описание тега scarborough-fair
Вашему СЭД
скрипта с комментариями:
# Добавьте следующую строку ввода в шаблон пространство со встроенной новой строки
Н
# Заменить встроенную строку со строкой ХХХХХХХХХ
з/\п/ХХХХХХХХХ/
# (неявные печати, начало следующего цикла перезаписи шаблонов с следующей строке)
Итак, Вы читаете строки, добавлять строки, заменить+выход. Затем вы читаете третью строку, дописывать четвертую, а вышедший на замену+выход.
Если вы хотите собрать все линии, вы можете сделать это двумя способами с помощью sed
.
Использовать явный цикл:
:верхнее; Н; $!btop; с/\н/ХХХХХХХХХ/г
, что является "добавьте следующую строку, и если мы еще не в конце, сделать это снова, а затем заменить все переводы строк".Применение пространства:
1{х;д;}; ч; ${Х;С/\Н/ХХХХХХХХХ/г;р;}; д
, что является "копией первой линии от трюмного помещения и отказаться от ввода, добавить все другие линии тоже есть и удалять их из входного, но при прибытии в последней строке, поменять в трюмном помещении, заменить символы новой строки и распечатать результат".
Основное различие между этими двумя альтернативами состоит в том, что первый никогда не выходит из первого цикла до самого конца и создает строку в шаблон пространство, а второй бежит в конец каждой строки входных и накапливает результат в трюм.
Другой способ смотреть на это, используя на awk
.
Ваш СЕПГ
код по сути
на awk '{ строка = $0; Гэтлину; линия печати "ХХХХХХХХХ" $0 }'
То, что вы хотите
на awk '{ строка = (строка == "" ? $0 : линия "ХХХХХХХХХ" $0 ) } конец { печати }'
Это будет имитировать использование пространства в СЭД
.
Или,
на awk '{ строка = $0; пока (Гэтлину > 0) линия = "ХХХХХХХХХ" $0; печать строки }'
Это позволит моделировать с помощью явного цикла в СЭД
.