使用 sed 删除空行

新手上路,请多包涵

我正在尝试使用 sed 删除空行:

 sed '/^$/d'

但我没有运气。

例如,我有这些行:

 xxxxxx

yyyyyy

zzzzzz

我希望它像:

 xxxxxx
yyyyyy
zzzzzz

这应该是什么代码?

原文由 jonas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 677
2 个回答

您的“空”行中可能有空格或制表符。使用带有 sedPOSIX 类 来删除所有仅包含空格的行:

 sed '/^[[:space:]]*$/d'

使用 ERE 的较短版本,例如使用 gnu sed:

 sed -r '/^\s*$/d'

(注意 sed 支持 PCRE。)

原文由 Kent 发布,翻译遵循 CC BY-SA 4.0 许可协议

我缺少 awk 解决方案:

 awk 'NF' file

哪个会返回:

 xxxxxx
yyyyyy
zzzzzz

这是如何运作的?由于 NF 代表“字段数”,那些为空的行有 0 个字段,因此 awk 将 0 评估为 False 并且不打印任何行;但是,如果至少有一个字段,则评估为 True 并使 awk 执行其默认操作:打印当前行。

原文由 fedorqui 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏