输出文件,每行一个字节,十六进制格式(在 linux bash 下)



正如标题所说,这里有一个例子:

$ 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系统上使用。

相关内容

  • 没有找到相关文章

最新更新