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

如何使用sed在---行后无空行时仅插入单个空白行

sed 匹配行后按需插入单个空白行实现方案

原有命令错误原因

之前的命令运行不符合预期,核心是两个问题:

  • sed的i(插入)命令输出插入内容时会自动追加换行符,手动添加\n或\\n会额外多生成换行,导致插入2个空白行
  • 命令中冗余的分支跳转、末尾的q指令会截断文件后续内容,无法完整输出全部文本

可直接运行的正确命令

GNU sed 版本(Linux 环境默认)

sed -E '/^---/{n;/^\s*$/!i\' inserting_one.txt

跨版本兼容写法(适配 GNU sed / BSD sed,macOS 环境可用)

sed -E '/^---/{n;/^[[:space:]]*$/!i\
' inserting_one.txt

执行逻辑说明

  • 匹配所有以---开头的行
  • 读取匹配行的下一行到模式空间,同时正常输出当前匹配到的---行
  • 校验读取到的下一行:
    • 如果该行是空白行(由0或多个空格、制表符等空白字符组成),跳过插入逻辑,继续正常输出后续内容
    • 如果该行不是空白行,执行插入操作:i\后不追加任何内容,依靠i命令自动追加的换行符生成1个空白行,不会出现多插空行的问题
  • 所有不匹配规则的行都按原内容输出,不改动原有文本结构

效果校验

当输入内容为:

---
n
WORKING_DIR

命令输出为预期效果:

---

WORKING_DIR

当---后已经存在空白行时,命令不会重复插入空行,保持原有内容不变。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:57:22