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 agrep -E -i -v
-
-E
: Interprete o padrão como uma expressão regular estendida (ERE, consulteman 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.