6

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

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

我想要的输出是:

41
42
43
44

我知道这对于 sed、awk 和其他东西是可能的,但是对于大文件来说这可能非常慢。我想到了“hexdump”的格式字符串或“od”的参数组合。你能帮帮我吗?

4

2 回答 2

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

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

于 2014-02-11T21:53:46.717 回答
6
od -An -vtx1 -w1 test.txt | cut -c2-

如果您不想要换行符:

od -An -vtx1 -w1 test.txt | cut -c2- | fgrep -v 0a

选项的含义od

  • -An: 地址: 没有
  • -v: 冗长,即不要写 a*而不是重复行
  • -tx1: 输出类型:十六进制,1 字节(-tx1z用于类似hd的输出)
  • -w1:最大宽度:1

一件好事od是它可以在任何*x系统上使用。

于 2014-02-11T21:51:51.310 回答