한 줄에 최소한의 1바이트를 원한다고 가정해 보겠습니다.ASCII 코드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)*", $_'
또한 내 테스트에서 (GNU와 비교하여) 3개 중 가장 빠르며 od
작은 파일을 제외하면(이 역시 그렇지 않음 hexdump
) 속도가 큰 이점이 있습니다.vim
xxd
답변2
아마도 hexdump
:
$ echo foo | hexdump -v -e '1/1 "%02x\n"'
66
6f
6f
0a
이것은 BSD의 원본 버전입니다.매뉴얼은 여기에 있습니다 (BSD 버전).
그러나 위에 표시된 예제는 Linux에서 실행되고 있습니다.