od
é um comando padrão . Em od -An -tx1 -w1 -v
, a única coisa que não é POSIX é a opção -w
.
Você pode substituí-lo por:
od -An -vtx1 | LC_ALL=C tr -cs '0-9a-fA-F' '[\n*]' | grep .
O qual funcionaria em qualquer sistema compatível com POSIX e funcionaria no FreeBSD pelo menos:
$ echo test | od -An -vtx1 | LC_ALL=C tr -cs 0-9a-fA-F '[\n*]' | grep .
74
65
73
74
0a
Ou com uma invocação de sed
para substituir o tr
+ grep
:
od -An -vtx1 | sed 's/^[[:blank:]]*//;s/[[:blank:]]*$//;/./!d
s/[[:blank:]]\{1,\}/\
/g'
(ou
od -An -vtx1 | sed -n 's/[[:blank:]]*\([^[:blank:]]\{2\}\)[[:blank:]]*/\
/g;s/\n$//p'
Com perl
(não é um comando POSIX, mas onipresente em qualquer coisa, exceto em sistemas incorporados):
perl -ne '
BEGIN{$/ = 92; $, = $\ = "\n"}
print unpack "(H2)*", $_'
Qual é também o mais rápido dos 3 em meus testes (comparado ao GNU od
) por uma margem significante para qualquer coisa, menos arquivos pequenos (além de hexdump
, não de vim
' xxd
).