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

时间:2014-02-11 21:46:10

标签: bash output hexdump

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

$ cat test.txt 
ABCD
$ hd test.txt 
00000000  41 42 43 44 0a                                    |ABCD.|
00000005

我想要的输出是:

41
42
43
44

我知道这可以用sed,awk和stuff来实现,但对于大文件来说这可能会非常慢。我想到了" hexdump"的格式字符串。或者" od"的参数组合。你能帮帮我吗?

2 个答案:

答案 0 :(得分:10)

$ echo -n 'ABCD' | hexdump -v -e '/1 "%02x\n"'
41
42
43
44
0a

如果您不希望它在新行的末尾打印0a,那么我建议先从文件中删除换行符。

答案 1 :(得分:6)

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