XXD输出,无换行


13

我可以告诉我xxd不要在输出中打印任何换行符并将转储作为连续的一行吗?

[user@localhost] : ~ $ echo -n "this is a long line and xxd is going to take multiple lines to print it" | xxd -p
746869732069732061206c6f6e67206c696e6520616e6420787864206973
20676f696e6720746f2074616b65206d756c7469706c65206c696e657320
746f207072696e74206974

5
您可以简单地使用tr删除换行符,例如... | xxd -p | tr -d \\n
don_crissti

它取决于您的需求,但是一个方便的选择xxd是,它忽略空白,以-r替代其后抄写/普通-p转储(或任何普通的十六进制转储)。例如。以下行用换行\n,但反向的输出正是输入的内容: echo {1..14} | xxd -p | xxd -p -r产生输出:1 2 3 4 5 6 7 8 9 10 11 12 13 14\n\n是来自echo
Peter.O 2015年

1
您也可以使用hexdump -v -e '/1 "%02X"'代替xxd
dirkt

Answers:


15

您需要的是-c选项。

# echo -n "this is a long line and xxd will print it as one line" | xxd -p -c 1000000

746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65

以下是文档中的一些信息:

-c cols | -cols cols每行格式化八位字节。默认值16(-i:12,-ps:30,-b:6)最多256个。

文档说,“ c”参数的最大值是256,但是我尝试使用更大的值并且它起作用。一探究竟:

# xxd -c 1000000 -p -l 1000000 /dev/urandom | wc -c
2000001

在这里,我从/ dev / random中转储了一百万个字节,并得到了200万+1个字符的字符串。/ dev / random中的每个字节都由2个字符表示,附加字节是最后一个换行符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.