shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Arquivo com espaço e posição diferente


From: jimmy
Subject: Re: [shell-script] Arquivo com espaço e posição diferente
Date: Wed, 20 May 2009 12:59:54 -0300
User-agent: Mutt/1.4.2.3i

On Wed, May 20, 2009 at 12:43:43PM -0300, jimmy wrote:
> On Wed, May 20, 2009 at 09:39:58AM -0300, Luciano Estevam Rangel wrote:
> > Pessoal como prometido estou enviando a entrada para meu script e a saída 
> > dele
> > 
> > Só existe um problema também que eu não consegui resolver, por eu ter 
> > precisado retirar o "=" com o sed para poder colocar as variáveis em uma 
> > array e testar se o campo e from ou to para pegar o próximo campo, por não 
> > saber em que posição se encontra. Os arquivos que tiverem = no nome vão 
> > ficar em branco...No exemplo abaixo o arquivo 
> > "=?iso-8859-1?Q?Sociedade_de_informa=E7=E3o.doc" ficou no report como " 
> > ?iso-8859-1?Q?Sociedade_de_informa E7 E3o.doc? "
> > 
> > Segue junto o script novamente para quem quiser dar uma melhorada ou me dar 
> > uma luiz para resolver este problema Obrigado a todos.
> > 
> >  
> > 
> > ***************************************************************************************************************************************
> > 
> >  
> > 
> > ENTRADA:
> > 
> > May 18 13:13:20 teste-mail postfix/cleanup[17948]: 415011D78237: reject: 
> > header Content-Type: 
> > application/msword;??name="=?iso-8859-1?Q?Sociedade_de_informa=E7=E3o.doc?="
> >  from Zeca.zeca.local[192.168.0.22]; from=<address@hidden> 
> > to=<address@hidden> proto=ESMTP helo=<zeca>: 5.7.1 TESTE-MAIL - SEU ANEXO 
> > rma FOI RECUSADO PELO NOSSO SERVIDOR, TENTE REENCAMINHA-LO ZIPADO OU EM 
> > CASO DE DUVIDAS ENTRE EM CONTATO COM O ADMINISTRADOR PELO E-MAIL 
> > address@hidden DEPARTAMENTO DE TECNOLOGIA TESTE SERVICOS.
> > 
> > May 19 17:10:14 teste-mail postfix/cleanup[13589]: 56FC11D782CB: reject: 
> > header Content-Disposition: attachment; filename="porta caneta de bambi Luc 
> > Brad.wmv" from web63407.mail.re1.yahoo.com[69.147.97.47]; 
> > from=<address@hidden> to=<address@hidden> proto=SMTP 
> > helo=<web63407.mail.re1.yahoo.com>: 5.7.1 TESTE-MAIL - SEU ANEXO wmv FOI 
> > RECUSADO PELO NOSSO SERVIDOR, TENTE REENCAMINHA-LO ZIPADO OU EM CASO DE 
> > DUVIDAS ENTRE EM CONTATO COM O ADMINISTRADOR PELO E-MAIL address@hidden 
> > DEPARTAMENTO DE TECNOLOGIA TESTE SERVICOS
> > 
> > May 19 17:49:48 teste-mail postfix/cleanup[14033]: 553501D782CD: reject: 
> > header Content-Type: application/vnd.ms-powerpoint;?  name="COLONIA DE 
> > FERIAS- SINTERC-PANORAMA.pps" from zeus.neobiz.com.br[200.174.139.27]; 
> > from=<address@hidden> to=<address@hidden> proto=ESMTP 
> > helo=<zeus.neobiz.com.br>: 5.7.1 TESTE-MAIL - SEU ANEXO pps FOI RECUSADO 
> > PELO NOSSO SERVIDOR, TENTE REENCAMINHA-LO ZIPADO OU EM CASO DE DUVIDAS 
> > ENTRE EM CONTATO COM O ADMINISTRADOR PELO E-MAIL address@hidden 
> > DEPARTAMENTO DE TECNOLOGIA TESTE SERVICOS.
> > 
> >  
> > 
> > ****************************************************************************************************************************************
> > 
> > SAIDA:
> > 
> > May 18 13:13 FROM: <address@hidden>  TO: <address@hidden>  FILENAME: " 
> > ?iso-8859-1?Q?Sociedade_de_informa E7 E3o.doc? "
> > 
> > May 19 17:10 FROM: <address@hidden> TO: <address@hidden> FILENAME: "porta 
> > caneta de bambi Luc Brad.wmv"
> > 
> > May 19 17:49 FROM: <address@hidden> TO: <address@hidden> FILENAME: "COLONIA 
> > DE FERIAS- SINTERC-PANORAMA.pps"
> > 
> >  
> > 
> > *****************************************************************************************************************************************************************************************************************************************************
> > 
> > SCRIPT:
> > 
> > #!/bin/sh
> > cat /var/log/maillog|grep ANEXO |sed 's/:/ /g'|sed 's/=/ /g' |sed 's/??/ 
> > /g' |while read line
> > do
> > nomes=(`echo $line`)
> > ##########################################################
> > count_from=0
> > while [ $count_from != ${#nomes[@]} ]
> > do
> > if [ ${nomes[$count_from]} == from ]
> > then
> > let "count_from = count_from + 1"
> > from=`echo ${nomes[$count_from]}`
> > fi
> > let "count_from = count_from + 1"
> > done
> > ###########################################################
> > count_to=0
> > while [ $count_to != ${#nomes[@]} ]
> > do
> > if [ ${nomes[$count_to]} == to ]
> > then
> > let "count_to = count_to + 1"
> > to=`echo ${nomes[$count_to]}`
> > fi
> > let "count_to = count_to + 1"
> > done
> > ###########################################################
> > count_f=0
> > while [ $count_f != ${#nomes[@]} ]
> > do
> > if [ ${nomes[count_f]} == name ]
> > then
> > file=`echo $line |grep -o "name \".*\"" |sed 's/name//'`
> > else
> > if [ ${nomes[count_f]} == filename ]
> > then
> > file=`echo $line |grep -o "filename \".*\"" |sed 's/filename//'`
> > fi
> > fi
> > let "count_f = count_f + 1"
> > done
> > ###########################################################
> > 
> > data=`echo $line |awk '{print $1, $2, $3":"$4}'`
> > echo $data FROM: $from TO: $to FILENAME: $file > report
> > done
> > 
> >  
> > 
> > Luciano Rangel
> > 
> > ------------------------------------
> 
> usando apenas sed a partir do seus exemplos fica um pouco indigesto:
> 
> sed 
> 's/^\(.*:[0-9]\{1,2\}\)\s\+.*\(name\|filename\)="\([^"]\+\)".*from=<\([^>]\+\)>.*to=<\([^>]\+\)>.*/\1
>  FROM: \4  TO: \5 FILENAME "\3"/' arquivo 
> 
> isso tudo numa linha só, mas resolve o seu problema.
> ------------------------------

encontrei uma saída em awk, mas também não ficou muito legível:

awk '{out=($1" "$2" "$3);
last=""; for ( i = 4; i <= NF; i++ )
  last=(last" "$i);
split(last, a, /(name|filename)="|(from|to)=<|" from|> /);
print out, "FROM: " a[4],"TO: " a[6], "FILENAME: \""a[2]"\"" }' arquivo


-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]