混在した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ã