휴대용 라인당 1바이트 16진수 덤프

휴대용 라인당 1바이트 16진수 덤프

한 줄에 최소한의 1바이트를 원한다고 가정해 보겠습니다.ASCII 코드16진수 덤프. 아래에리눅스사용암소 비슷한 일종의 영양 od, 이것은 작동합니다 :

echo foo | od -An -tx1 -w1 -v

산출:

 66
 6f
 6f
 0a

하지만 이건 작동하지 않아BSD파생 상품 때문에BSD odutil에는 다른 플래그가 있습니다.

휴대성이 가장 좋은 것은 무엇입니까?*닉스방법? 실패하면 가능한 최선의 접근 방식은 무엇입니까?

답변1

od표준 명령입니다. 에서 od -An -tx1 -w1 -vPOSIX가 아닌 유일한 것은 -w옵션입니다.

다음으로 바꿀 수 있습니다.

od -An -vtx1 | LC_ALL=C tr -cs '0-9a-fA-F' '[\n*]' | grep .

모든 POSIX 호환 시스템, 그리고 최소한 FreeBSD에서는 작동합니다:

$ echo test | od -An -vtx1 | LC_ALL=C tr -cs 0-9a-fA-F '[\n*]' | grep .
74
65
73
74
0a

또는 +를 단일 호출로 sed바꾸십시오 .trgrep

od -An -vtx1 | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//;/./!d
s/[[:blank:]]\{1,\}/\
/g'

(또는

od -An -vtx1 | sed -n 's/[[:blank:]]*\([^[:blank:]]\{2\}\)[[:blank:]]*/\1\
/g;s/\n$//p'

)

사용하십시오 perl(POSIX 명령은 아니지만 임베디드 시스템을 제외한 모든 시스템에서 어디에나 사용 가능).

perl -ne '
  BEGIN{$/ = \8192; $, = $\ = "\n"}
  print  unpack "(H2)*", $_'

또한 내 테스트에서 (GNU와 비교하여) 3개 중 가장 빠르며 od작은 파일을 제외하면(이 역시 그렇지 않음 hexdump) 속도가 큰 이점이 있습니다.vimxxd

답변2

아마도 hexdump:

$ echo foo | hexdump -v -e '1/1 "%02x\n"'
66
6f
6f
0a

이것은 BSD의 원본 버전입니다.매뉴얼은 여기에 있습니다 (BSD 버전).

그러나 위에 표시된 예제는 Linux에서 실행되고 있습니다.

답변3

xxd리눅스에 존재하고,BSD, 그리고OSX:

echo foo | xxd -p -c 1
66
6f
6f
0a

관련 정보