You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed删除下一行是空行的含open模式的行?

Sed命令实现删除后续行为空行的含指定模式的行

原始文件内容 (file.txt)

checking
open something
connected
open something
connected
open something

checking
open something

checking
open something
connected
open something

期望处理后的内容

checking
open something
connected
open something
connected

checking

checking
open something
connected

已尝试的命令

尝试过的sed单行命令未达到预期效果:

sed -i "/open/{$!N;/\n.*^$/!P;D}" file.txt

核心需求

仅删除后续行为空行的包含open模式的行。

可行解决方案

使用以下sed命令即可实现需求:

sed -i '/open/{N;/\n$/!P;D}' file.txt

命令逻辑解释

  • /open/{:定位到所有包含open的行
  • N:将当前行的下一行追加到模式空间中,此时模式空间包含当前行+换行符+下一行
  • /\n$/!P:如果模式空间的结尾不是\n$(即下一行不是空行),则打印模式空间的第一部分(也就是原来的open行)
  • D:删除模式空间的第一部分(到第一个换行符为止),然后重新执行sed循环,处理剩余的内容

内容的提问来源于stack exchange,提问作者Robot110010

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:31:08