Caracteres especiais em um feed da Web

1

Estou executando um script para verificar meu Gmail na linha de comando e exibir os primeiros 35 caracteres no título.

curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | \
grep -oPm1 "(?<=<title>)[^<]+" | sed '1d'|cut -b 1-35

O script funciona bem, exceto quando o título contém caracteres especiais como ' , & e similares. Como posso tê-los exibidos corretamente? O recorte e cole aqui a exibe corretamente, mas quando eu imprimo no terminal, eu recebo &#39 para ' e &amp para & .

Up to 93% Off - Valentine&#39;s Day Today&#39;s Deals Live Now:
Michael Vince • FENDI &amp; More for Men
    
por Scott Goodgame 28.01.2015 / 08:09

1 resposta

3

Você tem que decodificar o html, então canalize a saída por um decodificador:

com perl :

$ your cammand | perl -MHTML::Entities -le 'while(<>) {print decode_entities($_);}'

Veja o exemplo:

$ echo "Ambersand &amp; and Single quote &#39" | perl -MHTML::Entities -le 'while(<>) {print decode_entities($_);}'
Ambersand & and Single quote '
    
por 28.01.2015 / 09:46