質問: 1 #この場合だと、\x64\x65を解釈して、deと表示されてほしい。 ``` ### 発生している問題・エラーメッセージ **sedで表示された文字列がechoで表示されない。** sedで渡した引数に対して、変換処理をする際にうまくいきません。 ### 該当のソースコード ``` #!/bin/bash PID=2000 #任意のPID strace -e read -s16384 -q -xx -p ${PID} 2>&1 | sed -une "s=^read(12, \"\(.*\)\".*=\1=p" | xargs echo -ne ``` ``` #!/bin/bash PID=2000 #任意のPID strace -e read -s16384 -q -xx -p ${PID} 2>&1 | sed -une "s=^read(12, \"\(.*\)\".*=\1=p" #ここまでであれば、以下のように16進数が表示される。 #\x6c #\x6c #\x0d\x0a ``` **どのようにすれば、sedから渡される16進数の文字列を、asciiに変換して表示できるか教えていただけないでしょうか。**
回答: `printf "%b" (16進数の文字列)`になります。 パイプで16進数の文字列を渡す場合は`| xargs -0 printf "%b"`となるかと思います。 【追記】 コメントにてこれでは動かないとのご指摘がありました。そのため、sed以降を ``` sed -une 's/\\/\\\\/g; s=^read(12, "\(.*\)".*=\1=p' | xargs -n 1 printf "%b" ``` として対応しました。