使用shell在HTML代码作业中插入行

时间:2015-07-24 05:13:02

标签: shell

您好我有以下示例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>之后

我想只插入一次。我怎么能克服这个?

1 个答案:

答案 0 :(得分:0)

\<HEAD\>替换为<HEAD>。换句话说,使用:

sed  '/<HEAD>/a <script src="../blabla.js"></script>' input.html

在GNU sed下,基本正则表达式\<HEAD\>与单词HEAD匹配,因为\<匹配单词的开头,\>匹配单词的结尾。这与符合您要求的<HEAD>形成鲜明对比:<HEAD>

\<HEAD\>会匹配HTML代码中出现的字符串HEAD。周围的尖括号或斜线不匹配。

在替换命令的替换部分中,GNU将转义的尖括号解释为与简单的尖括号相同的含义。因此,逃脱是多余的,最好被删除。