별칭은 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}'\'

답변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

관련 정보