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

如何使用Sed在指定块后的首个空行处插入新空行?

没问题,我来帮你搞定这个sed的需求!你之前用sed '/Additional categories/a new'在匹配行后直接插入内容的方法很实用,现在要实现的是找到Additional categories对应的块之后的第一个空行,再插入一个空行对吧?

解决方案命令

直接用这条sed命令就能实现:

sed '/Additional categories/{:a;N;/\n$/!ba;s/\n$/\n\n/}' your_file.txt

命令逐段解释

我拆开来给你讲清楚每部分的作用:

  • /Additional categories/:定位到以Additional categories开头的行,触发后续的多行处理逻辑
  • :a:定义一个名为a的标签,用来做循环跳转的标记
  • N:把下一行内容读取到当前的模式空间里,这样我们就能逐行往后查找目标空行
  • /\n$/!ba:检查模式空间的末尾是不是纯空行(\n$代表最后一行是空行),如果不是,就跳回标签a继续读取下一行,直到找到第一个空行
  • s/\n$/\n\n/:当找到第一个空行后,把原来的单个换行(对应空行)替换成两个换行,相当于在这个位置插入了一个新的空行

示例验证

拿你给出的文件内容测试:

Additional categories
stuff A
stuff B
other stuff
other stuff

Additional categories
stuff A
stuff B
stuff C
stuff D
other stuff
other stuff

执行命令后,结果会变成:

Additional categories
stuff A
stuff B
other stuff
other stuff

Additional categories
stuff A
stuff B
stuff C
stuff D
other stuff
other stuff

正好符合你要在首个空行位置插入空行的预期。

扩展:兼容含空白字符的“空行”

如果你的文件里的“空行”可能包含空格或制表符(不是纯空),可以把命令调整为下面这样,能匹配这类非纯空的空行:

sed '/Additional categories/{:a;N;/\n[[:space:]]*$/!ba;s/\n[[:space:]]*$/\n\n/}' your_file.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:39:05