我可以告诉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
答案1
您需要的是 -c 选项。
# echo -n "this is a long line and xxd will print it as one line" | xxd -p -c 1000000
746869732069732061206c6f6e67206c696e6520616e64207878642077696c6c207072696e74206974206173206f6e65206c696e65
以下是来自文档:
-c 列 | -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 转储 100 万字节,得到一个 200 万 + 1 个字符的字符串。 /dev/random 中的每个字节由 2 个字符表示,附加字节是最后的换行符。
答案2
版本xxd
2022-01-14(附带vim
8.2.4088) 或更新版本,您现在可以使用-p
and-c
并将其值设置为 0,如手册页:
-c
列|-cols
列格式列每行八位位组。默认 16(
-i
:12、-ps
:30、-b
:6)。最多 256。没有最大值-ps
。对于-ps
,0 会产生一长行输出。
例如:
$ echo "Lorem Ipsum is simply dummy text of the printing and typesetting industry." | xxd -p -c0
4c6f72656d20497073756d2069732073696d706c792064756d6d792074657874206f6620746865207072696e74696e6720616e64207479706573657474696e6720696e6475737472792e0a