複数のファイルに1行を追加する方法

複数のファイルに1行を追加する方法

私はたくさん.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

関連情報