**"В конечном счете все сводится к пациенту больше, чем врач"** мета комментарий: есть проблема с этой аналогией - в западной медицине врач дает таблетку и лечит пациента, Пациент должен сделать почти ничего. Это не как просветительской работы, хотя многие считают, что это именно так и проводят свою жизнь в поисках идеального гуру. Лучшая аналогия может быть ", в конечном счете, все сводится к телу строителя больше, чем тренажеры" или "все сводится к художнику, чем кисть" когда я попробовать команду я получаю эту ошибку **СЭД: 1: “file1.txt": недопустимый код команды е** странно есть умная цитата в сообщении об ошибке... Это на самом деле является ценным дополнением к Вопросы/ответы на этом сайте (и документы ловушку другие пользователи могут столкнуться также). Так что если вы не возражаете, мы хотели бы сохранить вопрос для будущих посетителей. Если вы не согласны, просто удалите его еще раз, и мы будем уважать, что нет плохих чувств. +1 Отличный вопрос. Нет актуальных до сих пор ответы.

Вашему СЭД скрипта с комментариями:

# Добавьте следующую строку ввода в шаблон пространство со встроенной новой строки
Н

# Заменить встроенную строку со строкой ХХХХХХХХХ
з/\п/ХХХХХХХХХ/

# (неявные печати, начало следующего цикла перезаписи шаблонов с следующей строке)

Итак, Вы читаете строки, добавлять строки, заменить+выход. Затем вы читаете третью строку, дописывать четвертую, а вышедший на замену+выход.

Если вы хотите собрать все линии, вы можете сделать это двумя способами с помощью sed.

  1. Использовать явный цикл: :верхнее; Н; $!btop; с/\н/ХХХХХХХХХ/г, что является "добавьте следующую строку, и если мы еще не в конце, сделать это снова, а затем заменить все переводы строк".

  2. Применение пространства: 1{х;д;}; ч; ${Х;С/\Н/ХХХХХХХХХ/г;р;}; д, что является "копией первой линии от трюмного помещения и отказаться от ввода, добавить все другие линии тоже есть и удалять их из входного, но при прибытии в последней строке, поменять в трюмном помещении, заменить символы новой строки и распечатать результат".

Основное различие между этими двумя альтернативами состоит в том, что первый никогда не выходит из первого цикла до самого конца и создает строку в шаблон пространство, а второй бежит в конец каждой строки входных и накапливает результат в трюм.


Другой способ смотреть на это, используя на awk.

Ваш СЕПГ код по сути

на awk '{ строка = $0; Гэтлину; линия печати "ХХХХХХХХХ" $0 }'

То, что вы хотите

на awk '{ строка = (строка == "" ? $0 : линия "ХХХХХХХХХ" $0 ) } конец { печати }'

Это будет имитировать использование пространства в СЭД.

Или,

на awk '{ строка = $0; пока (Гэтлину > 0) линия = "ХХХХХХХХХ" $0; печать строки }'

Это позволит моделировать с помощью явного цикла в СЭД.