
rodrigorosa
(usa CentOS)
Enviado em 21/08/2015 - 15:49h
Boa tarde pessoal!
Sou novo por aqui, meu primeiro post na verdade. Estou com uma dificuldade e gostaria do auxílio da comunidade se possível.
Estou tentado retirar informações relevantes de linhas de um arquivo de log por meio do comando grep e algumas expressões regulares. Cheguei a um resultado que não é o ideal. Abaixo segue o que estou tentando fazer:
COMANDO GREP PARA PEGAR APENAS AS LINHAS DE LOG QUE CONTENHAM A PALAVRA: 'INVALIDA'
$ grep -F INVALIDA log_2015-06-30.txt
Resultado: (colei apenas uma linha para facilitar a visualização)
2015-06-30 23:58:03,792 INFO handler.ProtocolHandler.MESSAGE -> /10.22.8.26:20792 6144793 <Request><cop>122</cop><cli>000000000115240</cli><codRep>59</codRep><msg>CONTA INVALIDA </msg><op>OPERADORA</op><nr>0</nr><nru>002298</nru><term>38845030</term></Request>
Tentei executar o seguinte comando para extrair para um novo arquivo com as seguintes informações Data hora, cli, msg e op, ou seja, algo parecido com isso:
2015-06-30 23:58:03,792<cli>000000000115240</cli><msg>CONTA INVALIDA </msg><op>OPERADORA</op>
Executei isso, mas não fui muito feliz
$ grep -F INVALIDA log_2015-06-30.txt | grep -E -o "(.*INFO)|<cli>.*</cli><msg>.*</msg><op>.*</op>"
pois retornou a informação quebrada em duas linhas:
2015-06-30 23:58:03,792 INFO
<cli>000000000115240</cli><msg>CONTA INVALIDA </msg><op>OPERADORA</op>
Desde já agradeço o apoio.