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

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

Re: [shell-script] Filtro de Anexo de E-mail


From: Reinaldo Carvalho
Subject: Re: [shell-script] Filtro de Anexo de E-mail
Date: Fri, 18 Jan 2008 00:30:47 +0000

> Tenho o seguinte comando dentro de um shell
>
> cat email | grep -i 'filename="' > /tmp/file
>
> #> cat /tmp/file
> filename="=?iso-8859-1?Q?can=E7ao.txt?="
> filename="=?iso-8859-1?B?Y2Fu5+NvLnR4dA==?="
>
> Preciso saber como converter essas 2 saídas para o nome correto do
> arquivo que seriam:
> filename=cançao.txt
> filename=canção.txt
>
> Qualquer dica será bem vinda, pois já não sei mais o que pensar.
>
> Obrigado
>
> Ronaldo Araujo


Q: significa quoted-printable.. procure a tabela e use o sed.
=E7 é ç
filename="=?iso-8859-1?Q?can=E7ao.txt?="

B: significa base64
filename="=?iso-8859-1?B?Y2Fu5+NvLnR4dA==?="
echo Y2Fu5+NvLnR4dA== | openssl enc -d -a

se o seu sistema estiver em UTF-8, você precisará
echo Y2Fu5+NvLnR4dA== | openssl enc -d -a | iconv -f iso-8859-1 -t utf-8

#cat anexo
filename="=?iso-8859-1?Q?can=E7ao.txt?="
filename="=?iso-8859-1?B?Y2Fu5+NvLnR4dA==?="

#!/bin/bash
while read line ; do
  test $(cut -d '?' -f 3 <<< $line) == "Q" && {
    echo "filename=\"$(sed -e 's/=E7/ç/g' < <(cut -d '?' -f 4 <<< $line) )\""
    continue
  }
  test $(cut -d '?' -f 3 <<< $line) == "B" && {
    echo "filename=\"$(openssl enc -d -a < <(cut -d '?' -f 4 <<<
$line) | iconv -f iso-8859-1 -t utf-8 )\""
  }

done < anexo

filename="cançao.txt"
filename="canção.txt"

você precisa ver a tabela quoted-printable para trocar todos os demais
caracteres...


-- 
Reinaldo Carvalho


reply via email to

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