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

如何用sed或awk替换HTML标签中的文本?

替换HTML中favicon链接的sed/awk正确实现

问题根源

你之前的sed命令报错是因为用了/作为替换分隔符,而目标HTML标签里包含/(比如image/x-icon里的斜杠),sed会把这个斜杠当成替换命令的结束标记,导致语法错误。

解决方案

1. sed 实现(推荐)

换用非斜杠的分隔符(比如#),同时用精准正则匹配href的内容:

sed 's#<link href="[^"]*" rel="icon" type="image/x-icon" />#<link href="${favicon}" rel="icon" type="image/x-icon" />#g' input.html > output.html
  • #作为替换命令的分隔符,避开标签内的斜杠冲突
  • [^"]*匹配双引号内的任意内容(除了双引号),确保只替换href属性的值
  • 末尾的g表示全局替换(如果页面有多个符合的标签)

2. awk 实现

通过匹配目标行,替换指定属性:

awk '/<link href="[^"]*" rel="icon" type="image\/x-icon" \/>/{sub(/href="[^"]*"/, "href=\"${favicon}\"")}1' input.html > output.html
  • 先筛选出包含目标favicon标签的行,注意这里斜杠需要转义成\/
  • sub()函数专门替换行内的匹配部分,精准定位href属性
  • 最后的1是awk的简写,意为打印所有行(修改后的行和未匹配的行都会输出)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:32:06