hey,
não sei se te ajuda, mas, usando sed, você pode tratar os blocos dessa
forma (fiz um pequeno script em sed que, creio, pode facilitar o
entendimento):
<code>
#!/usr/bin/sed -nf
# limita o bloco entre linhas com "From maillog" e "X-Mailer"
/^>From maillog/,/^X-Mailer/{
# escreve o "From: " na tela e no arquivo from.txt
s/^From: \(.*\)/FROM=\1/pw from.txt
# escreve o "To :" e "Date: " na tela
s/^To: \(.*\)/TO=\1/p;
s/^Date: \(.*\)/DATE=\1/p;
}
</code>
É apenas uma idéia. Se achar legal, pode tentar remodelar a saída,
produzindo algo mais próximo do que você precisa.
hasta!
jr.
On 5/8/07, mop <[EMAIL PROTECTED]> wrote:
> Eu usaria (uso) coisas assim:
>
> while read;do
> [ "$REPLY" = "From maillo" ]&&HEADER=1&&echo inicio
> [ "$REPLY" = "X-Mailer: XP" ]&&HEADER=&&echo fim
> done<arquivo
>
>
> -----------------------
> Ao responder, favor retirar meu endereço de email do corpo da mensagem.
> Obrigado!
>
>
>
> ------------------------------------------------------------------
> >From: Edilson Azevedo
> >Date: Tue, 08 May 2007 10:03:38 -0300
> >
> >Bom dia pessoal!
> >
> >A algum tempo mandei um email para vcs para me auxiliar a retirar
> >alguns dados de um arquivo. Lembrando, a sintaxe do arquivo é essa aqui:
> >
> >Date: Mon, 7 May 2007 10:05:37 -0300 (BRT)
> >From: "Javali cafona" <[EMAIL PROTECTED]>
> >
> >Como podem ver é o cabecalho de uma mensagem de email. Para separar o
> >"From" numa variável, por exemplo, eu uso:
> >FROM=`cat $ARQ| grep '^From' | cut -f2 -d'<' |sed -e s/"From: "// |tr -d
> >'>'| sed 's/^[ ]*//;s/[ ]*$//'`(assim eu pego só o endereço
> >de email
> >do sujeito)
> >
> >Aprendí muito com vcs e tudo está joia! Porém (sempre tem um porém...
> >rsrs), Eu me deparei com uma dúvida. Sei separar por linhas, sei limpar
> >a linha e sei salvar em banco. Mais como faço para saber se a informação
> >que tenho é realmente de email1 ou email2?
> >
> >Não sei se estou sabendo me expressar, mais minha dúvida é a seguinte: É
> >possivel fazer com que o shell-script separe um arquivo por blocos??
> >Dessa forma eu faria assim (desculpe a ignorância, mais tentarei dar um
> >exemplo):
> >
> >Email 1
> >>From maillog
> >Date: Mon, 10 May 2007 11:02:01 -0300 (BRT)
> >Subject:
> >From: "Javali cafona" <[EMAIL PROTECTED]>
> >X-Mailer: XP
> >
> >Email 2
> >>From maillog
> >Date: Mon, 7 May 2007 10:05:37 -0300 (BRT)
> >From: "Javali cafona" <[EMAIL PROTECTED]>
> >Cco: [EMAIL PROTECTED]
> >X-Mailer: XP
> >
> >Eu quero que o shell leia o arquivo, quando ele encontrar "From maillog"
> >ele saiba que é o inicio do bloco e quando ele ler "X-Mailer: XP" saiba
> >que é o fim. Dessa forma ele inicia o trabalho em $BLOCO. Depois ele lê
> >o conteúdo de $BLOCO (From:, To:, Date:) e manda para devidas variáveis
> >($FROM, $TO, $DATE) e pronto! Ele manda o valor de $FROM.... para
> >arquivo texto (ou em banco, que é o meu caso).
> >Daqui por diante ele deve descartar o valor de todas as variáveis e
> >continuar para o _próximo_ bloco, que ele sabe que começa em "From
> >maillog" e termina em "X-Mailer: XP". Sacaram? O problema principal
> >seria essa idéia de separar em blocos, coletar variáveis e pular para o
> >próximo bloco. Francamente nunca lí nenhum script que faça isso... rs.
> >
> >Se alguém puder me dar uma luz!
> >
> >Valeu Pessoal!!!
> >--
> >
> >
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
>
> Links do Yahoo! Grupos
>
>
>