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

如何用sed结合正则实现Markdown标题首尾等号对应替换

用sed转换Markdown标题格式

要实现将行首#标记的标题转换为首尾对应数量=包裹的格式,可借助GNU sed的保持空间(hold space)完成,核心逻辑是先捕获开头#的数量,转换为对应数量的=后,再拼接回标题首尾。

单文件处理命令

sed -E '
/^#/{
    h
    s/^(#+).*/\1/
    s/#/=/g
    G
    s/(=+)\n(#+)( .*)/\1 \3 \1/
}' your_file.md

批量处理多个Markdown文件(带备份)

sed -i.bak -E '
/^#/{
    h
    s/^(#+).*/\1/
    s/#/=/g
    G
    s/(=+)\n(#+)( .*)/\1 \3 \1/
}' *.md

命令拆解

  1. /^#/:仅匹配以#开头的标题行
  2. h:把当前完整标题行存入保持空间暂存
  3. s/^(#+).*/\1/:在模式空间中只保留开头的#序列
  4. s/#/=/g:将所有#替换为=,得到与原#数量一致的=字符串
  5. G:把保持空间里的原标题行追加到模式空间,此时结构为====\n#### Heading 4
  6. s/(=+)\n(#+)( .*)/\1 \3 \1/:将=序列、标题内容拼接成==== Heading 4 ====的最终格式

注意事项

  • 该命令依赖GNU sed(Linux系统默认自带,macOS需安装GNU sed并使用gsed命令)
  • -i.bak会为原文件生成.bak后缀的备份,无需备份可直接用-i参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:05:19