本文讲解如何用 sed 命令在 html 文件中精准定位某一行(如 “),并在其**正前方插入一行新内容**,重点解决因缩进空格导致匹配失败的常见问题。
在处理 HTML 或其他格式化文本时,直接使用 sed ‘/pattern/i text’ 插入内容看似简单,却极易因空白符(空格、制表符) 导致匹配失败。例如,原始 HTML 中 行通常被缩进(如前面有 2 个空格或 1 个 tab),而正则表达式中若写 /^
✅ 正确做法是:允许并跳过行首可能存在的空白符。推荐使用 POSIX 字符类 [[:space:]]*(兼容空格、tab、换行符等):
sed '/^[[:space:]]*<link[^>]*rel="stylesheet"[^>]*href="[^"]*styles\.css"[^>]*>/i \ <link href="https://fonts.googleapis.com/css?family=Noto+Serif" rel="stylesheet">' test.html
⚠️ 注意事项: