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
이 경우 sed
STDIN에서 아무 것도 가져오지 않고 awk
그냥 앞에 추가하는 것 같습니다 \x
.
답변1
인용 문제입니다. 확장을 방지하려면 작은따옴표를 사용 $0
하고 각 리터럴 작은따옴표를 적절하게 이스케이프 처리하세요.
alias pythonhex='sed '\''s/ */\\x/g'\'' | awk '\''{print "\\x"$0}'\'
답변2
별칭 문제는 실제로 참조 문제이며 사용자가 올바르게 해결했습니다.초로바.
하지만 더 간단한 기능을 고려해 볼 수 있습니다.
pythonhex(){ printf "\134x%s" "$@"; echo; }
다음과 같이 사용됩니다:
$ pythonhex 5f 74 34 0c c9 7b 9f f8 7a 7c 46 ff ff 5c 31 26
\x5f\x74\x34\x0c\xc9\x7b\x9f\xf8\x7a\x7c\x46\xff\xff\x5c\x31\x26