Deseja pesquisar a ocorrência de uma string de “erro” em um arquivo de log, exceto em algumas cadeias que tenham “erro” (devemos ignorar essas cadeias de caracteres)

1

Eu quero pesquisar ocorrência de "erro" no arquivo de log usando se condição e imprimir esse erro está presente no arquivo de log. e se não estiver presente, deve imprimir nenhum erro encontrado. A questão aqui é no meu arquivo de log é, eu tenho alguma palavra que tem erro como substring, e eu quero ignorar essas palavras, pois não são contadas como um erro a ser considerado ..

Words are :
"LocalErrorPagePolicy"
"ErrorMapping"
"CustomErrorPagePolicy"
"error=ForceYes"

And also i want to avoid one line where error occurs:
Error details may be seen in the file:

E as ocorrências de erro devem ser consideradas.

Qualquer ajuda, muito apreciada!

Eu tentei grep -v "string" filename, não funciona.

    
por Abhijeet Anand 22.09.2017 / 09:10

1 resposta

0

Uma abordagem (muito aproximada) é para grep todas as ocorrências de "erro": grep -i "error" FILENAME

Explicação:

  • -i : Filtrar maiúsculas e minúsculas em sensível (o equivalente a RegEx é o /i flag)
  • "error" : filtrar pelo termo "erro"
  • FILENAME : o arquivo para pesquisar em

Em seguida, filtre os que não deseja:

grep -Eiv "(LocalErrorPagePolicy|ErrorMapping|CustomErrorPagePolicy|error=ForceYes|Error details may be seen in the file:)" FILENAME

Explicação:

  • -Eiv : Concatenação de vários parâmetros, equivalente a grep -E -i -v
  • -E : Interprete o padrão como uma expressão regular estendida (ERE, consulte man grep para obter mais informações)
  • -i : caso de filtro em sensível
  • -v : Inverta o sentido da correspondência para selecionar linhas não correspondentes.

Para o padrão:

  • () : os parênteses criam um grupo correspondente
  • | : o caractere de canal serve como% lógicoor

Isso é dividido em "encontrar TERM1 OU TERM2 OR ... OU TERMX" e, em seguida, descartar as linhas em que esses termos são encontrados.

Se adicionarmos os dois juntos, obtemos:

grep -i "error" FILENAME | grep -Eiv (LocalErrorPagePolicy|ErrorMapping|CustomErrorPagePolicy|error=ForceYes|Error details may be seen in the file:)"

Para testar isso, criei um arquivo fictício muito pequeno:

LocalErrorPagePolicy
ErrorMapping
CustomErrorPagePolicy
error=ForceYes
Error details may be seen in the file:
Stackoverflowerror
I like errors
error error
LocalErrorErrorError
CustomErrorErrorPolicy
error=errorYes
I am a successfully output!

Resultado após aplicar o grep -command:

Stackoverflowerror
I like errors
error error
LocalErrorErrorError
CustomErrorErrorPolicy
error=errorYes

Como você pode ver, os termos indesejados foram filtrados com sucesso.

    
por FatalMerlin 22.09.2017 / 10:18