Оценка этого ответа удивительна ;s
(этот удивленный подмигивающий смайлик на замену sed является преднамеренным) с учетом спецификаций OP: sed объединяет строки вместе .
Последний комментарий *
"в этом случае проверьте, что отправлено @ninjalj"
также предлагает проверить то же самое ответ .
т.е.Проверьте, используя sed ':a;/0$/{N;s/\n//;ba}'
дословно
sed ':a;/0$/{N;s/\n//;ba}'
does
no one
ie. 0
people,
try
nothing,
ie. 0
things,
any more,
ie. 0
tests?
(^D aka eot 004 ctrl-D ␄ ... bash generate via: echo ^V^D)
, который не даст (выполните тест;):
does no one ie. 0
people, try nothing, ie. 0
things, any more, ie. 0
tests? (^D aka eot 004 ctrl-D ␄ ... bash generate via: echo ^V^D)
Чтобы получить это использование:
sed 'H;${z;x;s/\n//g;p;};/0$/!d;z;x;s/\n//g;'
или:
sed ':a;/0$/!{N;s/\n//;ba}'
не:
sed ':a;/0$/{N;s/\n//;ba}'
Примечания:
sed 'H;${x;s/\n//g;p;};/0$/!d;z;x;s/\n//g;'
не использует ветвления и
идентичен:
sed '${H;z;x;s/\n//g;p;};/0$/!{H;d;};/0$/{H;z;x;s/\n//g;}'
H
начинает все последовательности d
замыкает накоротко дальнейшее выполнение команды сценария в текущей строке и запускает следующий цикл, поэтому селекторы адресов, следующие за /0$/!
, могут быть только /0$/!!
, поэтому селектор адресов
/0$/{H;z;x;s/\n//g;}
является избыточным и не нужен. - , если строка не заканчивается на 0, сохраните ее в поле удержания
/0$/!{H;d;}
- если строка заканчивается на 0, сохраните ее, а затем напечатайте флеш (двойной ввод, т. е. очищенный и выравнивание строк)
/0$/{H;z;x;s/\n//g;}
- NB
${H;z;x;s/\n//g;p;}
использует команды /0$/ ...
с дополнительными p
для принудительного завершения печати и теперь с ненужным z
(для очистки и сброса пространства шаблона, например s /.*//)