[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