> 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