您好我有以下示例HTML代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<script src="../2.js"></script>
</HEAD>
<body>
hello all!
</body>
</html>
我想在<script>
部分插入<HEAD>
行。
我尝试了以下命令:
sed '/\<HEAD\>/a \<script src="../blabla.js"\>\</script\>' input.html > temp.html && mv temp.html input.html
但是这个命令插入两次,一次在<HEAD>
之后,另一次在</HEAD>
之后
我想只插入一次。我怎么能克服这个?
答案 0 :(得分:0)
将\<HEAD\>
替换为<HEAD>
。换句话说,使用:
sed '/<HEAD>/a <script src="../blabla.js"></script>' input.html
在GNU sed下,基本正则表达式\<HEAD\>
与单词HEAD匹配,因为\<
匹配单词的开头,\>
匹配单词的结尾。这与符合您要求的<HEAD>
形成鲜明对比:<HEAD>
。
\<HEAD\>
会匹配HTML代码中出现的字符串HEAD
。周围的尖括号或斜线不匹配。
在替换命令的替换部分中,GNU将转义的尖括号解释为与简单的尖括号相同的含义。因此,逃脱是多余的,最好被删除。