
jlamartin
(usa Fedora)
Enviado em 21/08/2010 - 20:51h
Ola Galera!
Tenho um arquivo de log e tenho que filtrar apenas a linha em que aparece uma determinada palavra e após concatenar as variáveis que desejo, ex:
Date=20101020|PNAM=Teste|PNUM=250|CCOD=0|RECI=2|ADFT=Null|MSG=Teste|LIP=192.122.4.256|...
As linhas são muito extensas e com muitos parâmetros. Eu quero selecionar apenas as linhas que contém o parâmetro PNUM e gravar um arquivo com os parâmetros que eu quiser.
Utilizei o script abaixo porém só funciona com um número limitado de comandos fgrep e gostaria da ajuda de vocês para poder incluir mais parâmetros ou lógica para melhoria.
Se possível também checar o arquivo de log sempre que o mesmo seja acrescentado e extrair os parâmetros online.
Obrigado
#!/usr/bin/ksh
fgrep PNUM /teste/arq.log | fgrep CCOD | fgrep MSG | sed 's/|/;/g' | while read linha
do
IFS_SV=$IFS
IFS=";"
for i in `echo "$linha" | sed 's/=/="/g' | sed 's/;/";/g' | sed 's/$/"/g'`
do
#echo $i
eval $i
done
IFS=$IFS_SV
echo "PNUM=$PNUM CODE=$CCOD MSG=$MSG"
done