我有一个包含网址的index.html
文件。实施例
<!-- UC -->
<A href="uc/live/current/index.html" >UC Live</A> 
<A href="uc/live/" >(All months)</A><br>
<!-- VI -->
<A href="vi/live/current/index.html" >VI Live</A> 
<A href="vi/live" >(All months)</A><br>
<!-- NQ-PRO -->
<A href="nq/live/current/index.html" >NQ Live</A> 
<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> 
<A href="ex/live/" >(All months)</A><br>
答案 0 :(得分:1)
sed '/\<\/body\>/i\
<!-- EX -->\
<A href="ex/live/current/index.html" >EX Live</A> \
<A href="ex/live/" >(All months)</A><br>' index.html
i
命令在匹配模式的行之前插入数据。以反斜杠结尾的连续行被添加。您可能不得不担心插入行上的空白。
答案 1 :(得分:1)
尝试以下简单的sed
命令(GNU sed
)
sed 's@</body>@\t<!-- EX -->\n\t<A href="ex/live/current/index.html" >EX Live</A> \n\t<A href="ex/live/" >(All months)</A><br>\n</body>@'
无需使用/
作为分隔符,它可以是您想要的,这里我们有分隔符@
便携式解决方案
(在Solaris 11
,FreeBSD 8.0
和Archlinux
)
sed 's@</body>@ <!-- EX -->\
<A href="ex/live/current/index.html" >EX Live</A> \
<A href="ex/live/" >(All months)</A><br>\
</body>@' file.html
答案 2 :(得分:1)
将3行保存在变量a
中然后:
awk -v a=$a '/<\/body>/{t=$0;$0=a"\n"t;}1' index.html