エイリアスはSTDINで読み取れないようです。

エイリアスはSTDINで読み取れないようです。

hexdump出力の16進数を「Pythonの」16進表現に変換するためのエイリアスを探しています。

$ echo "5f 74 34 0c c9 7b 9f f8  7a 7c 46 ff ff 5c 31 26" | sed 's/  */\\x/g' | awk '{print "\\x"$0}'
\x5f\x74\x34\x0c\xc9\x7b\x9f\xf8\x7a\x7c\x46\xff\xff\x5c\x31\x26

上記の方法が有効でしたので、次のようにエイリアスを作成してみました.bashrc

alias pythonhex="sed 's/  */\\x/g' | awk '{print \"\\\\x\"$0}'"

しかし、うまくいかないようです。

$ echo "5f 74 34 0c c9 7b 9f f8  7a 7c 46 ff ff 5c 31 26" | pythonhex 
\x

この場合、sedSTDINから何もインポートせずにawk前に追加するようです\x

ベストアンサー1

引用問題です。拡張を防ぐには、単一引用符を使用し、$0各リテラル単一引用符を適切にエスケープします。

alias pythonhex='sed '\''s/  */\\x/g'\'' | awk '\''{print "\\x"$0}'\'

おすすめ記事