moshell пишет:доктор, не нашел в вашем мануале описания различия между конвейером и опцией
потому-что это не имеет никакого отношения к sed.
Опция -e вообще не имеет никакого смысла (кроме использования команд, у которых имеется параметр - имя файла, или иная строка. Но даже в этом случае, я предпочитаю использовать многострок или файл-скрипт)
moshell пишет:почему sed ведет себя по разному в некоторых случаях?
ну потому-что sed -e x -e x эквивалентно sed 'x;x', т.е. для каждой строки выполняются две команды последовательно. В данном случае,
1. обменивается буфер и область удержания
2. обменивается область удержания и буфер
Очевидно, результат от этого не меняется.
Если вы запускаете ДВЕ команды sed 'x' | sed 'x', то
1. обменивается исходная строка и ПЕРВАЯ область удержания (из первой команды)
2. обменивается ВТОРАЯ область удержания, с ПЕРВОЙ областью, которая поступила из конвейера.
Результат первого случая:
$ echo "a
b
c
d" | sed 'x;x'
a
b
c
d
(нет изменений)
результат второго:
$ echo "a
b
c
d" | sed 'x' | sed 'x'
a
b
(задержка на 2 строки - первая строка сначала уходит в первую область удержания, затем во вторую, а уж затем выходит из конвейера)
ЗЫЖ замечу, что конвейер намного дольше работает, хотя некоторые вещи без него не сделать. К примеру sed = выдаёт номер строки, но выдаёт его только наружу, потому поймать и обработать его можно лишь второй sed...
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)