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

如何使用sed为href链接添加.html后缀并排除特定链接?

解决方案:用sed精准添加.html后缀(排除特定链接)

sed完全能搞定这个需求,只需要调整正则表达式,精准匹配需要修改的链接即可。

推荐命令(GNU sed适用)

sed -E -i 's/(href=")([^"]*)(?!:\/\/)(?!\.(css|js))"/\1\2.html"/g' "$FILE"

命令逻辑拆解

  • -E:启用扩展正则语法,支持负向前瞻这类高级匹配规则
  • (href="):捕获链接的起始标签部分,替换时用\1引用
  • ([^"]*):捕获引号内的链接内容,替换时用\2引用
  • (?!:\/\/):负向前瞻,确保链接内容里没有://(直接排除带协议的外部链接,比如https://xxx)
  • (?!\.(css|js)):负向前瞻,确保链接内容不是以.css或.js结尾(排除已有特定后缀的资源链接)
  • 替换后的\1\2.html":把捕获的起始部分、链接内容,加上.html后缀,再补回结尾引号,完成修改

兼容旧版sed的替代方案

如果你的sed版本不支持负向前瞻,可分两次执行sed命令,先排除带协议的链接,再修正误加后缀的情况:

# 第一步:给不带://的链接添加.html后缀
sed -i '/href=".*:\/\/.*"/! s/\(href="\)\([^"]*\)\("\)/\1\2.html\3/g' "$FILE"
# 第二步:给误加了.html的.css/.js链接还原后缀
sed -i 's/\(href=".*\)\.html\(\.\(css\|js\)"\)/\1\2/g' "$FILE"

关于sed是否合适

sed非常适合这类场景:它是专门处理行文本替换的轻量工具,执行效率高,不需要加载庞大的解析库,完全能满足你对批量链接修改的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:48:19