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 [EMAIL PROTECTED]
>  entrega 1 da msg 1 to dest1
>    lixolixolixolixo
>    lixolixolixolixo
>  entrega 2 da msg 1 to dest2
> end msg  1
> msg 2  from [EMAIL PROTECTED]
>  entrada 1 da msg 2 to dest1
> end  msg 2
> msg 1 from [EMAIL PROTECTED]
>  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 [EMAIL PROTECTED] , 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 [EMAIL PROTECTED]" 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 "[EMAIL PROTECTED]" | 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

---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a