bashのHTMLページで特殊な16進文字を変換する方法は? [コピー]

bashのHTMLページで特殊な16進文字を変換する方法は? [コピー]

Webページの一部の情報を処理するスクリプトがあります。ページエンコーディングにより、一部の特殊文字が16進数でエンコードされているようです。たとえば、「/」に翻訳する必要がある文字列「%2f」があります。

bashでこれらの16進特殊文字をASCIIに変換するにはどうすればよいですか?どんなアイデアがありますか?

答え1

printfBashには、Cで学んだのとほぼ同じ組み込み機能があります。構文が若干異なります。

printf '\x2f'

より高いレベルのデータ整合性の問題を心配する必要がない場合は、次の関数を使用してURLを簡単に変換できます。

function deUrl() {
    printf "${1//%/\\x}"
}

%(すべてをaに変換し\xてからprintfで印刷します。)

答え2

これらのエンティティは、次のPython one-linerを使用してデコードできます。

$ python -c "import urllib, sys; print urllib.unquote(sys.argv[1])"  "%2f"
/

コードは単一文字に限定されません。より複雑な文字列を受け入れます。

$ python -c "import urllib, sys; print urllib.unquote(sys.argv[1])"  "%2d and %2f"
- and /

Pythonのurllib.unquote文書化ここ

関連情報