Из документации sed:
d Delete the pattern space; immediately start next cycle.
Что означает следующий цикл? Насколько я понимаю, sed не будет применять следующие команды после команды d и начнет читать следующую строку из входного потока и обрабатывать ее. Но кажется, что это не так. Смотрите этот пример:
[root@localhost ~]# cat -A test.txt
aaaaaaaaaaaaaa$
$
bbbbbbbbbbbbb$
$
$
ccccccccc$
ddd$
$
eeeeeee$
[root@localhost ~]# cat test.txt | sed '/^$/d;p;p'
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
bbbbbbbbbbbbb
bbbbbbbbbbbbb
bbbbbbbbbbbbb
ccccccccc
ccccccccc
ccccccccc
ddd
ddd
ddd
eeeeeee
eeeeeee
eeeeeee
[root@localhost ~]#
Если сразу начать следующий цикл, то команда p не будет иметь никакого вывода.
Кто-нибудь может помочь мне объяснить это, пожалуйста? Спасибо.