我可以使用sed /^$/d <file>
删除文件中的所有空白行,但是如果我只想打印所有空白行怎么办?命令sed /^$/p <file>
打印文件中的所有行。
我想这样做的原因是我们使用EDA程序(Expedition),它使用正则表达式来运行网络名称的规则。我正试图找到一种方法来搜索没有分配名称的所有网络。我认为使用^$
会起作用,但它最终会找到所有网络,这也是/^$/p
正在做的事情。那么有不同的方法吗?
答案 0 :(得分:18)
除非另有说明,sed将在完成处理后打印图案空间。如果仔细查看输出,您会发现文件中的每一行都有2个空白行。您必须使用-n命令行开关来停止打印sed。
sed -n /^$/p infile
应该按你的意愿工作。
答案 1 :(得分:2)
默认情况下,sed打印每一行,因此p标志是无用的。为了使它有用,你需要给sed -n开关。实际上,以下似乎可以满足您的需求:
sed -n /^$/p
答案 2 :(得分:1)
您也可以将grep
用作:
grep '^$' infile
答案 3 :(得分:1)
以另一种方式思考,不要 p ,但!d
你可以试试:sed '/^$/!d' yourFile