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

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

한 줄에 최소한의 1바이트를 원한다고 가정해 보겠습니다.아스키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'

)

( perlPOSIX 명령은 아니지만 임베디드 시스템을 제외한 모든 곳에서 사용 가능):

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

이것은 또한 작은 파일을 제외한 모든 것(또한 '보다 , ' 보다 ) od에 대해 상당한 마진으로 내 테스트에서(GNU와 비교하여) 3개 중 가장 빠릅니다 .hexdumpvimxxd

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

관련 정보