コマンドラインで私のGmailを確認し、タイトルの最初の35文字を表示するスクリプトを実行しています。
curl -u username:password --silent "https://mail.google.com/mail/feed/atom" | \
grep -oPm1 "(?<=<title>)[^<]+" | sed '1d'|cut -b 1-35
タイトルに'
などの特殊文字が含まれていない場合、スクリプトは正しく機能します。&
正しく表示されるようにするにはどうすればよいですか?ここで切り取って貼り付けると正しく表示されますが、端末に印刷すると'
for'
と&
forが表示されます&
。
Up to 93% Off - Valentine's Day Today's Deals Live Now:
Michael Vince • FENDI & More for Men
答え1
HTMLをデコードする必要があるため、出力をデコーダを介してパイプします。
そしてperl
:
$ your cammand | perl -MHTML::Entities -le 'while(<>) {print decode_entities($_);}'
例をご覧ください。
$ echo "Ambersand & and Single quote '" | perl -MHTML::Entities -le 'while(<>) {print decode_entities($_);}'
Ambersand & and Single quote '