grep invertido não funciona da maneira que eu esperava

1

Estou tentando extrair algum texto dos meus arquivos de log do aplicativo e realmente não entendo por que ele não está funcionando ... Primeiro estou extraindo cada parte do arquivo que pode ter o que eu quero e depois quero para excluir aqueles que têm algumas palavras que eu não quero. O problema é que eu quero remover todo o bloco que o primeiro grep encontrou, não apenas a linha. Eu estou tentando isso:

grep -A 5 "header of start parts" file.log | grep -v "piece of unwanted words" -A 2 -B 3

Então eu pensei que usar o -A 2 e -B 3 removeria todo o bloco no segundo grep, mas não é o que está acontecendo. Ainda está me dando resultados com as palavras indesejadas ... Este é o padrão do meu arquivo:

Some text to ignore
Some Text to ignore
header of start parts
line to get together
line to get together
line to get together
line to get together
line to get together
Some text to ignore
header of start parts
line to get together
line with piece of unwanted words
line to get together
line to get together
line to get together
A lot of other logs and this patterns repeating

Então meu primeiro grep me deu todas as ocorrências disso:

header of start parts
line to get together
line to get together
line to get together
line to get together
line to get together

e isso:

header of start parts
line to get together
line with piece of unwanted words
line to get together
line to get together
line to get together

E o segundo grep eu quero excluir todo esse segundo bloco que postei. Obrigado por qualquer ajuda antecipadamente.

    
por Augusto 29.12.2016 / 18:42

1 resposta

3

Como grep útil delimita os blocos de contexto (por padrão, usando -- strings), você poderia passar o resultado do primeiro grep para awk no modo de parágrafo e excluir registros completos que correspondem ao segundo fragmento:

$ grep -A5 "header of start parts" file.log | 
  awk -vRS='\n--\n' '!/line with piece of unwanted words/'
header of start parts
line to get together
line to get together
line to get together
line to get together
line to get together
    
por steeldriver 29.12.2016 / 18:54