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

Hugo前置元数据标签格式转换求助(正则表达式支持)

Hugo迁移:批量转换YAML标签格式为字符串列表

下面是几种可行的批量转换方案,覆盖常用编辑器和命令行工具:

编辑器方案

VSCode

  1. 打开项目文件夹,按下Ctrl+Shift+F打开全局搜索替换面板
  2. 勾选「使用正则表达式」选项(按钮为.*)
  3. 搜索内容:^tags: (.*)$
  4. 替换内容:tags: ["${1/, /", "/g}"]
  5. 点击「替换全部」完成全局转换

Neovim

在Neovim中打开项目目录,执行以下Ex命令:

:g/^tags:/s/tags: \(.*\)/tags: ["\=substitute(submatch(1), ', ', '", "', 'g')"]/

该命令会全局匹配所有以tags:开头的行,自动将逗号分隔的标签转换为带引号的字符串列表。

命令行工具方案

sed

在项目根目录执行以下命令,批量处理所有Markdown文件:

sed -i.bak -E 's/^tags: (.*)$/tags: ["\1"]/; s/, /", "/g' content/posts/*.md
  • -i.bak:修改文件时自动创建备份(可省略,建议保留以防出错)
  • 先将tags:后的内容包裹进方括号,再将, 替换为", "完成标签引号添加

awk

使用awk实现更灵活的处理,命令如下:

awk '/^tags:/ {
    sub(/^tags: /, "", $0)
    gsub(/, /, "\", \"", $0)
    print "tags: [\"" $0 "\"]"
} !/^tags:/ { print }' content/posts/*.md > temp.md && mv temp.md content/posts/*.md
  • 匹配tags:开头的行,先移除前缀,再替换分隔符,最后拼接成目标格式
  • 非tags:行保持原样输出,最后覆盖原文件(操作前建议手动备份)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:15:35