本文详解如何用 sed 命令精准定位 html 中带缩进的 “ 标签,并在其前安全插入新样式链接,重点解决因空白符导致匹配失败的常见问题。
在处理自动生成或模板化的 HTML 文件时,常需通过命令行工具(如 sed)自动化注入资源引用,例如添加 Google Fonts 的 标签。但直接套用正则匹配常因 HTML 缩进、空格或制表符而失败——正如示例中 sed “/^ 实际位于缩进行(即行首含空格或制表符),而 ^ 锚点严格要求从行首真正开始匹配,导致正则无法命中。
✅ 正确做法是显式兼容前置空白符。推荐使用 POSIX 字符类 [[:space:]]*,它可匹配任意数量的空格、制表符等空白字符:
sed '/^[[:space:]]*<link[[:space:]]\+rel="stylesheet"[[:space:]]\+href="[^"]*styles\.css"[^>]*>/i\ <link href="https://fonts.googleapis.com/css?family=Noto+Serif" rel="stylesheet">' test.html
⚠️ 注意事项: