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

macOS下用SED定位.mdx文件第二处---行并插入重定向内容的实现方案

macOS 环境下 MDX 文件 frontmatter 重定向插入实现

核心实现逻辑

利用 sed 的 hold 空间做匹配计数器,逐行扫描文件定位第二处整行匹配 --- 的位置(即 MDX frontmatter 的闭合标记),在该位置上方插入重定向配置,全程兼容 BSD 版本 sed(macOS 原生自带),支持原地修改文件。

可直接复用的脚本片段

假设你已经在 Shell 中定义了存储重定向路径的变量:

# 示例变量定义,可根据实际逻辑替换值
REDIRECT_PATH="/some/kind/of/directory/path"

执行以下 sed 命令即可完成目标文件的修改:

sed -i '' '
  # 跳过不是整行匹配 --- 的内容
  /^---$/!b
  # 交换模式空间和hold空间,读取计数器值
  x
  # 首次匹配到---时,计数器为空,初始化计数器为1
  /^$/ {
    s/^$/1/
    x
    b
  }
  # 走到这里说明是第二次匹配到---,更新计数器
  s/1/2/
  x
  # 在当前第二处---的行上方插入两行配置
  i\
redirects:\
  - '"${REDIRECT_PATH}"'
' 目标文件路径.mdx

关键注意事项

  • 适配 macOS 特性:BSD 版本 sed 要求原地修改时必须显式指定备份后缀,使用 -i '' 表示不保留临时备份文件,和 Linux 环境下 -i 的效果一致
  • 变量传入兼容:sed 的单引号脚本块默认不展开 Shell 变量,通过「闭合单引号-拼接双引号包裹的变量值-重新打开单引号」的方式,可安全将 Shell 中的路径值传入插入内容,无需额外转义
  • 匹配精度:规则使用 ^---$ 严格匹配整行只有三个短横线的内容,不会误匹配正文里零散出现的三个短横线,完全符合 MDX frontmatter 的格式规范
  • 位置无关性:计数器逻辑不依赖固定行号,无论第二处 --- 在文件的第几行,只要是第二次出现就会触发插入逻辑,适配不同长度的 frontmatter 内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 11:15:06