Tente isso,
awk "/""$pat1""/,/""$pat2""/" test.log | grep -v "$pat3" > Error.bk
- imprime o contexto entre
$pat1
e$pat2
- Como temos espaço na primeira variável, use aspas duplas duas vezes.
Eu tenho um arquivo de log no qual preciso verificar se há alguma mensagem de erro. Se houver, extraia a mensagem de erro para outro arquivo.
Assim, posso ter um arquivo de erro para o arquivo diferente ter padrões de log diferentes. Então, como posso pesquisar o padrão de correspondência usando uma variável?
Como desejo criar um arquivo .sh
genérico para todos os arquivos de log. Suponha que eu tenha um arquivo no qual eu queira pesquisar para padronizar e imprimir em outro arquivo $pat1="ERROR MESSAGE"
$pat2="RAISE_ERROR_SEEN"
. Eu quero todas as linhas do arquivo b / w esses dois padrões.
Usando apenas variáveis.
de uma maneira mais simples:
grep -e "$pat1\|$pat2" filename > resultfile
Tags vim vi linux shell shell-script