Se você quiser imprimir a partir da primeira vez que o padrão aparecer, será fácil. Siga a mesma lógica que descrevi na outra resposta , mas com alguma lógica extra:
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 # /
Execute assim:
sed -f parse.sed infile
Ou como um one-liner portátil:
sed -n -e '/^dove$/{N;N;/\nbird\nbunny$/bb' -e '};d;:b' -e 'p;n;bb' infile
A saída nos dois casos:
dove
bird
bunny
gnu
hen
dove
bird
buffalo