grep
não o ajudará aqui. Este é um trabalho melhor realizado com sed
usando expressões de intervalo:
$ sed -n '/aaa/,/cdn/p' file
aaa
b12
cdn
$ sed -n '/zdk/,/dke/p' file
zdk
aaa
b12
cdn
dke
sed -n
suprime a impressão automática, para que as linhas sejam impressas apenas se explicitamente solicitado. E isso acontece quando o intervalo /aaa/,/cdn/
acontece.
Estas expressões de intervalo também estão disponíveis em awk
, onde você pode dizer:
awk '/zdk/,/dke/' file
Naturalmente, todas essas condições podem ser expandidas para um regex mais restrito, como sed -n '/^aaa$/,/^cdn$/p' file
, para verificar se as linhas consistem exatamente em aaa
e cdn
, nada mais.