Вы можете обрабатывать ввод построчно с помощью sed
и объединять многострочные сопоставление с шаблоном:
/pat1/ { N; N; ...; /pat2\npat3\n.../q }
Таким образом, в вашем примере это будет, например:
sed -n '/^dove$/ { N; N; /\nbird\nbunny$/q; }; p' infile
Вывод:
cat
dog
fox
cow