xxd仅输出二进制文件

时间:2015-03-09 01:05:53

标签: linux binary xxd

使用命令:

xxd -b some_text

将输出二进制表示和原始文本:

000054c: 11101111 10100001 10110110 00010000 01011011 10000110  ....[.
0000552: 01111000 11001000 01010101 11000101 11101111 10101111  x.U...
0000558: 10010111 11101010 00011001 01010100 10101010 10001110  ...T..

如何让实用程序只输出二进制文件?

3 个答案:

答案 0 :(得分:0)

该组合未在其manual page中列出。但是,您可以使用awk / sed / perl(您的选择)过滤结果。对于给定的示例,sed就足够了:

xxd -b some_text | sed -e 's/^[^:]*:[[:space:]][[:space:]]*//' -e 's/[[:space:]][[:space:]]*.\{6,6\}$//'

那是:

  • 在第一个“-e”选项中,通过第一个“:”删除所有内容,然后删除空格。

  • 在第二个“-e”选项中,从至少一个空格开始

  • 后跟6个字符(不清楚这些是否可以是空格,但测试似乎证实它们不是)
  • 剥离整个匹配的字符串

您可以将“[[:space:]] [[:space:]] *”替换为您想要匹配的空格数,但是虽然更详细,但字符类也更强大。 / p>

或者(因为whitespace是awk中的默认字段分隔符),可以通过awk传递:

xxd -b some_text | awk '{ printf "%s %s %s %s %s %s\n", $2, $3, $4, $5, $6, $7 }'

虽然作为一项规则,我使用最简单的工具。

答案 1 :(得分:0)

如果你只想要二进制文件,甚至不需要偏移量,你可以扩展Thomas Dickey的sed一行代码来剥离偏移量:

xxd -b some_text | sed -e 's/^.*: //; s/[[:space:]][[:space:]]*.\{6,6\}$//'

答案 2 :(得分:0)

" XXD"不要采取" some_text"作为输入但是" infile" 使用' cut'更短的答案命令打印6个字段(2到7):

xxd -b some_file | cut -d\  -f2-7