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:
-
-E
Use expressões regulares estendidas (para usar o caractere|
para alternação sem precisar fugir dela) -
-An
Imprime linhas adicionais depois do padrão, onde n é o número de linhas à direita para imprimir -
-P
Use expressões regulares no estilo perl ("experimental" emgrep
- installpcregrep
para melhor suporte a regex em perl) -
-z
Use o caractere nulo como separador (apenas fingindo neste caso, masgrep
aceitará nossa palavra) -
-o
imprime apenas a parte correspondente