Para usar grep para duas linhas diferentes, pesquise pelos dois padrões
$ grep -e sweet -e lemon file_type
This is a sweet
lemon.
Ou use alternância
$ grep -E 'sweet|lemon' file_type
This is a sweet
lemon.
Para obter a próxima linha após um padrão, você pode usar a opção de contexto
$ grep -A1 sweet file_type
This is a sweet
lemon.
Mas se você estiver procurando explicitamente por um padrão multilinha, isso é complicado porque grep pensa em linhas ... . Seu .* vai pegar tudo entre "doce" e "limão" na linha . Podemos obter "limão" na próxima linha com -P usando \n para corresponder à nova linha e informando grep o arquivo é nulo separado com -z :
$ grep -zPo 'This is a sweet\nlemon' file_type
This is a sweet
lemon.
Notas:
-
-EUse expressões regulares estendidas (para usar o caractere|para alternação sem precisar fugir dela) -
-AnImprime linhas adicionais depois do padrão, onde n é o número de linhas à direita para imprimir -
-PUse expressões regulares no estilo perl ("experimental" emgrep- installpcregreppara melhor suporte a regex em perl) -
-zUse o caractere nulo como separador (apenas fingindo neste caso, masgrepaceitará nossa palavra) -
-oimprime apenas a parte correspondente