Unicode文字列を印刷可能文字に安全に変換する

Unicode文字列を印刷可能文字に安全に変換する

混在したUnicode文字列\303\243(例えば%s

私はGNU coreutilsのprintfが自動的に変換することに気づきましたが、印刷したいものがわからない場合はprintfを信頼できないことを少し前に難しく学びました。

$ env printf "$(cat filename.htm)"
printf: %20M: invalid conversion specification

私はbashがそのような変換を行うことができることを知っていますが、正規表現を使用してファイルを繰り返す必要がありますが、これはまったく安全ではありません。

$ echo $'\303\243'
ã

これらのファイルをきれいで安全な方法で処理できるコマンドラインツールはありますか?

ベストアンサー1

ファイルに他のバックスラッシュがない場合:

$ printf %b\\n 'aa\303\243'
aaã

これにより、後ろに整数ではなく二重バックスラッシュを使用できます。

$ printf %b\\n "$(sed -E 's/\\/\\\\/g;s/\\(\\[0-7])/\1/g' <<< '\\a\na\303\243')"
\\a\naã

おすすめ記事