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

如何用grep&sed遍历JSON并批量替换多个HTML文件中的引用值

批量替换HTML中JS文件名的解决方案(基于grep+sed)

刚好我之前处理过类似的需求,用shell脚本结合grep和sed就能完美解决你的问题,具体步骤和代码如下:

核心思路

先从reference.json里提取出「旧JS文件名→新JS文件名」的映射规则,然后循环遍历所有目标HTML文件,用sed完成批量替换。

具体脚本

直接运行下面的shell命令即可(如果是Mac系统,注意sed的-i参数需要调整,我会在后面说明):

# 从reference.json提取替换规则并格式化
grep -o '"[^"]*":"[^"]*"' reference.json | sed 's/"\([^"]*\)":"\([^"]*\)"/\1=\2/' | while IFS='=' read -r old_js new_js; do
    # 对所有HTML文件执行替换操作
    sed -i "s/src=\"$old_js\"/src=\"$new_js\"/g" *.html
done

代码逐行解释

  • 提取JSON键值对:grep -o '"[^"]*":"[^"]*"' reference.json
    这个命令会把JSON里的每一组键值对单独抽出来,比如输出结果是"a.js": "first.1a.js"、"b.js": "second.2b.js"这样的行。

  • 格式化替换规则:sed 's/"\([^"]*\)":"\([^"]*\)"/\1=\2/'
    把上一步的结果转换成a.js=first.1a.js的格式,方便后续用read命令拆分旧文件名和新文件名。

  • 循环执行替换:while IFS='=' read -r old_js new_js; do ... done
    遍历每一条替换规则,把旧文件名存在old_js变量,新文件名存在new_js变量里。

  • sed批量替换:sed -i "s/src=\"$old_js\"/src=\"$new_js\"/g" *.html
    在所有.html文件中,把所有匹配src="old.js"的内容替换成src="new.js"。-i参数表示直接修改文件内容(不用生成临时文件)。

注意事项(针对Mac系统)

Mac自带的sed和GNU sed语法略有不同,如果你用的是Mac,需要把sed的-i参数改成-i '',否则会报错。修改后的命令如下:

grep -o '"[^"]*":"[^"]*"' reference.json | sed 's/"\([^"]*\)":"\([^"]*\)"/\1=\2/' | while IFS='=' read -r old_js new_js; do
    sed -i '' "s/src=\"$old_js\"/src=\"$new_js\"/g" *.html
done

自定义调整

如果你只想处理特定的HTML文件(比如只处理test1.html、test2.html),把命令里的*.html换成具体的文件名列表即可,比如:

sed -i "s/src=\"$old_js\"/src=\"$new_js\"/g" test1.html test2.html test3.html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:00:03