为什么sed/^ $/d只删除空行但/ ^ $/p会打印所有行?

Mar*_*ntz 5 regex sed

我可以用来sed /^$/d <file>删除文件中的所有空白行,但是如果我只想打印所有空白行怎么办?该命令sed /^$/p <file>打印文件中的所有行.

我想这样做的原因是我们使用EDA程序(Expedition)使用正则表达式来运行网络名称的规则.我正试图找到一种方法来搜索没有分配名称的所有网络.我认为使用^$会起作用,但它最终会找到所有的网,这也是/^$/p正在做的事情.那么有不同的方法吗?

小智 18

除非另有说明,否则sed将在完成处理后打印图案空间.如果仔细查看输出,您会发现文件中的每一行都有2个空白行.您必须使用-n命令行开关来停止打印sed.

sed -n /^$/p infile
Run Code Online (Sandbox Code Playgroud)

应该按你的意愿工作.