Если вы хотите печатать с первого появления шаблона, это легко сделать. Следуйте той же логике, которую я описал в другом ответе , но с некоторой дополнительной логикой:
parse.sed
/^dove$/ { # Match multi-line pattern
N # /
N # /
/\nbird\nbunny$/bb # When matched jump to label b
}
d # Restart with next line if no match
:b # \
n # Print the rest of the file
bb # /
Запустите это так:
sed -f parse.sed infile
Или как переносной -вкладыш:
sed -n -e '/^dove$/{N;N;/\nbird\nbunny$/bb' -e '};d;:b' -e 'p;n;bb' infile
Выход в обоих случаях:
dove
bird
bunny
gnu
hen
dove
bird
buffalo