クライアント用のアプリケーションをデバッグしていますが、データベースで問題を解決した情報が見つかりました。クライアントに抽出を要求しましたが、残念ながらクライアントは16進数の生データを送信しました...
私はクライアントにデータベースツールからプレーンテキストを再送信するように頼んでいますが、応答を待っている間私はbashソリューションを探しています。
エンコードされたデータがUTF-8でエンコードされた文字列であることがわかります。 Unixツールを使用してそれをデコードする方法はありますか?
答え1
含まれていますxxd
(通常は一緒に出荷されますvim
)
$ echo 5374c3a97068616e650a | xxd -p -r
Stéphane
ロケールの文字セット(出力を参照locale charmap
)がUTF-8でない場合(ただし、エンコードされた文字列のすべての文字を表すことができます)| iconv -f UTF-8
。
すべての文字を表していない場合は、 | iconv -f UTF-8 -t //TRANSLIT
おおよその値を求めることができます。
答え2
Perlも重要ですか?
$ echo "68656c6c6f0a" | \
perl -ne 'tr/a-fA-F0-9//cd; print pack("H*", $_)'
hello
そうでない場合は、次のようにできます。
$ echo "68656c6c6f0a" | sed -Ee 's/[0-9a-fA-F]{2}/\\\\x&/g' | xargs printf
hello
リテラルバックスラッシュが必要ですprintf
が、両方に特別なので、倍増xargs
するsed
必要があります。 ( \\\\x
-> \\x
-> \x
)