(linux-br) dica sed, awk ou grep
Junior Polegato - Linux
linux em juniorpolegato.com.br
Terça Agosto 21 15:45:59 BRT 2007
Rejaine Monteiro escreveu:
> Flavio Torres escreveu:
>
>> sed '1000,1055!d' arquivo.txt
>>
> a dica é boa.. mas não é tão simples assim..
> a referencias as linhas foi somente para dar um exemplo, ou seja, para
> mostrar que os dados nem sempre não estão em sequencia (uma linha após a
> outra)
> a intenção não é pegar pela linha..
> posso ter algo do tipo:
> msg 1 from xxx em zzz.com.br
> entrega 1 da msg 1 to dest1
> lixolixolixolixo
> lixolixolixolixo
> entrega 2 da msg 1 to dest2
> end msg 1
> msg 2 from yyy em .com.br
> entrada 1 da msg 2 to dest1
> end msg 2
> msg 1 from AAA em AAA.com.br
> lixolixolixolixo
> entrega 1 da msg 1 to dest1
> lixolixolixolixo
> lixolixolixolixo
> lixolixolixolixo
> end msg 1
> no exemplo acima, preciso filtrar o seguinte:
> quem recebeu as mensagens de xxx em zzz.com.br , referentes a msg 1 ? ( o
> resultado deverá ser dest1 e dest2 apenas)
> coloquei lixolixolixo aletaoriamente para mostrar que podem ou nao ter
> varias outras coisas no log entre uma linha e outra (aleatoriamente...)
> note que existe uma outra msg1, porém de outro remetente..
> é por isso preciso primeiro encontrar "msg1 from xxx em zzz.com.br" e em
> seguida pegar todas entregas dali em diante, até parar no primeiro "end
> msg 1"
> acho q essa é a chave para a busca, porém nao descobri ainda como fazer
> isso..
>
Olá,
Desculpe o lingüição de um linhas só, mas sendo o arquivo teste.txt
contendo passou acima e os 'echo ... |' para agilizar os testes, foi o
que consegui na pressa:
echo 1 | read -p "No. da Mensagem: " num; echo "xxx em zzz.com.br" | read
-p "Remente : " rem; sed -n "/^msg \+$num \+from \+$rem$/,/end
\+msg \+$num$/p" teste.txt | sed -n "s/ \+entrega \+[0-9]\+ \+da \+msg
\+$num \+to \+\(.*\)/\1/p"
Retire os 'echo ... |' e se tornará interativo:
read -p "No. da Mensagem: " num; read -p "Remente : " rem; sed -n
"/^msg \+$num \+from \+$rem$/,/end \+msg \+$num$/p" teste.txt | sed -n
"s/^ \+entrega \+[0-9]\+ \+da \+msg \+$num \+to \+\(.*\)$/\1/p"
Acho que dá para começar a brincar. Boa sorte!
--
Atenciosamente,
Junior Polegato
Um peregrino de problemas; Um pergaminho de soluções!
Página Profissional: http://www.juniorpolegato.com.br
Mais detalhes sobre a lista de discussão Linux-BR