正如标题所说,这里有一个例子:
$ cat test.txt
ABCD
$ hd test.txt
00000000 41 42 43 44 0a |ABCD.|
00000005
我想要的输出是:
41
42
43
44
我知道这可以通过 sed、awk 和其他东西来实现,但对于大文件来说,这可能非常慢。我想到了"十六进制转储"的格式字符串或"od"的参数组合。你能帮帮我吗?
$ echo -n 'ABCD' | hexdump -v -e '/1 "%02xn"'
41
42
43
44
0a
如果您不希望它在换行符的末尾打印0a
,那么我建议您先从文件中删除换行符。
od -An -vtx1 -w1 test.txt | cut -c2-
如果您不需要换行符:
od -An -vtx1 -w1 test.txt | cut -c2- | fgrep -v 0a
od
选项的含义:
-
-An
: 地址: 否 -
-v
:冗长,即不要写*
而不是重复行 -
-tx1
:输出类型:十六进制,1字节(使用-tx1z
表示类似hd
的输出) -
-w1
: 最大宽度: 1
od
的一个好处是它可以在任何*x
系统上使用。