한 줄에 최소한의 1바이트를 원한다고 가정해 보겠습니다.아스키16진수 덤프. 아래에리눅스사용하여암소 비슷한 일종의 영양 od
, 이것은 작동합니다 :
echo foo | od -An -tx1 -w1 -v
산출:
66
6f
6f
0a
하지만 그건 작동하지 않습니다BSD파생상품이기 때문에BSD od
util에는 다른 플래그가 있습니다.
가장 휴대성이 좋은 것은 무엇입니까?*아니야방법? 실패하면 가장 좋은 방법은 무엇입니까?
답변1
od
표준 명령입니다. 에서 od -An -tx1 -w1 -v
POSIX가 아닌 유일한 것은 -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
대체합니다 .tr
grep
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)*", $_'
이것은 또한 작은 파일을 제외한 모든 것(또한 '보다 , ' 보다 ) od
에 대해 상당한 마진으로 내 테스트에서(GNU와 비교하여) 3개 중 가장 빠릅니다 .hexdump
vim
xxd
답변2
아마도 hexdump
:
$ echo foo | hexdump -v -e '1/1 "%02x\n"'
66
6f
6f
0a
BSD의 원본입니다.설명서는 여기(BSD)에 있습니다..
그러나 위에 표시된 예제는 Linux에서 실행되었습니다.