2

我有一个index.html包含 URL 的文件。例子

    <!-- UC -->
        <A href="uc/live/current/index.html" >UC Live</A>&nbsp
        <A href="uc/live/" >(All months)</A><br>
    <!-- VI -->
        <A href="vi/live/current/index.html" >VI Live</A>&nbsp
        <A href="vi/live" >(All months)</A><br>
    <!-- NQ-PRO -->
        <A href="nq/live/current/index.html" >NQ Live</A>&nbsp
        <A href="nq/live/" >(All months)</A><br>
  </body>
</html>

我想为自动化编写脚本,所以它会自动在</body>标签上方添加 3 行节。例如,我想在</body>标签上方添加以下行。我相信我们可以使用 sed / awk 来做到这一点,但不知道怎么做?

<!-- EX -->
        <A href="ex/live/current/index.html" >EX Live</A>&nbsp
        <A href="ex/live/" >(All months)</A><br>
4

3 回答 3

1

尝试以下简单sed命令(GNU sed

sed 's@</body>@\t<!-- EX -->\n\t<A href="ex/live/current/index.html" >EX Live</A>&nbsp;\n\t<A href="ex/live/" >(All months)</A><br>\n</body>@'

不需要/用作分隔符,它可以是你想要的,这里我们有分隔符@

便携式解决方案 (在和上测试Solaris 11FreeBSD 8.0Archlinux

sed 's@</body>@  <!-- EX -->\
        <A href="ex/live/current/index.html" >EX Live</A>&nbsp;\
        <A href="ex/live/" >(All months)</A><br>\
</body>@' file.html
于 2012-10-11T15:36:38.097 回答
1

将您的 3 行保存在变量 a

然后:

awk -v a=$a '/<\/body>/{t=$0;$0=a"\n"t;}1' index.html
于 2012-10-11T15:38:41.563 回答
1
sed '/\<\/body\>/i\
    <!-- EX -->\
        <A href="ex/live/current/index.html" >EX Live</A>&nbsp\
        <A href="ex/live/" >(All months)</A><br>' index.html

i命令在匹配模式的行之前插入数据。添加以反斜杠结尾的连续行。您可能不得不担心插入行的前导空白。

于 2012-10-11T15:35:09.527 回答