Linux xxd仅输出二进制文件

Linux xxd仅输出二进制文件,linux,binary,xxd,Linux,Binary,Xxd,使用命令: xxd-b一些文本 将输出二进制表示形式和原始文本: 000054c: 11101111 10100001 10110110 00010000 01011011 10000110 ....[. 0000552: 01111000 11001000 01010101 11000101 11101111 10101111 x.U... 0000558: 10010111 11101010 00011001 01010100 10101010 10001110 ...T.. 如何让

使用命令:

xxd-b一些文本

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

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

如何让实用程序只输出二进制文件而不输出任何其他内容?

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

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

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

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

  • 后跟6个字符(不清楚这些字符是否可以是空格,但测试似乎证实它们不是)
  • 去掉所有匹配的字符串
您可以将“[:space:][[:space:][]*”替换为您想要匹配的确切空格数,但是尽管更详细,character类也更强大

或者(因为空格是awk中的默认字段分隔符),可以通过管道通过awk:

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

虽然我通常使用最简单的工具,但它可以工作。

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

xxd -b some_text | sed -e 's/^.*: //; s/[[:space:]][[:space:]]*.\{6,6\}$//'
“xxd”不接受“某些文本”作为输入,而是“填充”。
使用“剪切”命令打印6个字段(2到7)的简短答案:


谢谢,但是每行的开头如何,如何覆盖这些内容?例如,如何去掉000054c。@努力尝试我想我是在问如何跳过每行的前8个字符您想要类似于
xxd-p file.txt
xxd -b some_file | cut -d\  -f2-7