答案1
p
添加换行符:
% printf 1 | sed 'p;s/1/2/'
1
2%
可以看出,2
打印的 没有尾随换行符,但它前面的 1,来自p
, 是。
答案2
我想我找到了答案。来自 POSIX sed 的文档https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html, 它指出:
每当模式空间写入标准输出或命名文件时,sed 应立即在其后跟一个换行符。
这意味着该p
命令将始终打印模式空间以及换行符。这也解释了为什么2\n\n1
,4\n\n1\n3
和后面有换行符6\n\n1\n3\n5
。
如果您认为本文有什么问题,请指正。谢谢。