So completando a minha ideia anterior, e eu nao sabia q tu queria SÓ os e-mials.. Segue com a regex:
lazlo:~# cat txt Delivered-To: [EMAIL PROTECTED] To: [email protected] In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> From: [EMAIL PROTECTED] Sender: [email protected] lazlo:~# tail -f txt | sed -rn 's/^(Delivered-To:|To:|Sender:) (.*)$/\2/p' [EMAIL PROTECTED] [email protected] [email protected] -- Flávio do Carmo Júnior 2008/5/15 Tiago Barcellos Peczenyj <[EMAIL PROTECTED]>: > Eis um bom começo > > $ cat header > > Delivered-To: [EMAIL PROTECTED] > To: [email protected] > In-Reply-To: <[EMAIL PROTECTED]> > References: <[EMAIL PROTECTED]> > From: [EMAIL PROTECTED] > Sender: [email protected] > > $ awk 'BEGIN{FS="[: ]+";} $1 == "Delivered-To" { print $2}' header > [EMAIL PROTECTED] > > 2008/5/15 Edilson Azevedo <[EMAIL PROTECTED]>: >> Olá pessoal! >> >> Primeiro agradeço ao 'MrBIT' pela liberação do OFF-TOPIC. Continuando, >> os exemplos do sed me cairam bem, também tive bons resultados com a soma >> de grep e awk. Isso funciona perfeitamente em arquivo, mais em stream >> não sei como posso aplicar. Por exemplo: Tenho um arquivo que cresce >> constantemente devido á entrega e recebimentos de email na companhia, >> então a aplicação disso seria como se fosse em stream (no quente). Os >> seja: >> >> Os dados vêm ---> aqui o script atuaria ---> daqui pra frente seria a >> gravação em banco, coisa que já providenciei. >> >> Sendo assim, para cada bloco de informação do tipo abaixo ele me daria >> apenas o que eu quero em modo stream, dessa forma: >> >> Delivered-To: [EMAIL PROTECTED] ===> Isso eu quero >> To: [email protected] ====> Isso eu quero >> In-Reply-To: <[EMAIL PROTECTED]> >> References: <[EMAIL PROTECTED]> >> From: [EMAIL PROTECTED] >> Sender: [email protected] =====> Isso eu quero >> >> E guardaria em arquivo (ou banco em meu caso), limparia as variáveis - >> caso use variáveis para esse serviço - e passaria para o próximo bloco, >> sacaram? >> >> Essa parte de ler um arquivo em seqüencia, extrair apenas o necessário é >> que eu não sei fazer em shell. Se eu dou um cat e grep ele já traz o que >> eu quero, e ignora o resto. Daí pra frente terei o resultado só do >> primeiro grep, o resto será ignorado. >> >> Alguém sabe como posso fazer com que um script shell trabalhe dessa >> forma? Extraindo em stream apenas o que eu quero? >> >> Abraços amigos! >> >> > > -- > Tiago B Peczenyj > Linux User #405772 > > http://peczenyj.blogspot.com/ > "what does not kill us makes us stronger" >
