Eu quero começar o grepping a partir das linhas que tem CK
no final da linha e parar de grepping quando a linha tiver D
no final. Eu tentei grep "$CK" "$D" file..txt
, mas não funcionou.
Entrada:
kkkkkkkkkkk
jjjjjjjjjjjjjjjjjj
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
GGGGGGGGGGGGGG
GGGGGGGGGGGGGG
A saída desejada:
gggggggggggg/CK
JHGHHHHHHHH
HJKHKKLKLLL
JNBHBHJKJJLKKL
JLKKKLLKJLKJ/D
text-processing
sed
awk
grep
Rana Khan
fonte
fonte
awk '/\/CK/,/\/D/' input
Se você estiver usando BSD
grep
(não suporta perl regex param-P
), aqui está a solução alternativa:Isso funciona concatenando todas as linhas (substituindo novas linhas por
_
caracteres), verificando o padrão de uma linha e expandindo as linhas de volta ao seu estado original.Se você estiver usando o GNU
grep
, poderá obter a correspondência de várias linhasgrep
, mas precisará usar o perl-regexp paragrep
(-P
) como mencionado em outra resposta . Você ainda pode instalar o GNUgrep
no macOS viabrew install grep
e usá-loggrep
.Como alternativa, você pode usar o
pcregrep
que suporta padrões de várias linhas (-M
).Você também pode usar o
ex
comando, por exemplo:fonte