我有很多.html文件,我需要在 < 之后添加一个元标记头> 每个文件中的开始标记。
我怎样才能做到这一点?
是否vim
适合该任务?
答案1
在 中vim
,您可以执行以下操作:
:%s/<head\b[^>]*>/& <meta foo="bar">/g
您也可以在 GNU 中执行此操作sed
,这可能更合适:
for file in *.html; do
sed -i 's/<head\b[^>]*>/& <meta foo="bar">/g' "$file"
done
请注意,-i
会破坏符号链接。
答案2
sed -i '/PATTERN/ a\
Line which you want to append' filename
对于这个例子
sed -i '/<HEAD>/a <meta>' test.txt
<HEAD>
<HEAD>
结果 :
<HEAD>
<meta>
</HEAD>
上面的命令将在字符串匹配后追加新行。但是,如果文件的输入字符串为
<HEAD><TITLE></TITLE>
</HEAD>
结果:
<HEAD><TITLE></TITLE>
<meta>
</HEAD> //which is wrong.
也许我们可以尝试这种方法:
sed -i 's/<HEAD>/<HEAD><meta>/' filename