如何在多个文件中添加一行

如何在多个文件中添加一行

我有很多.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

相关内容