複数のファイルにテキストを1行追加する

複数のファイルにテキストを1行追加する

したがって、ディレクトリに複数のファイルがあり、各ファイルにテキスト行を挿入する必要があります。デフォルトでは、次の形式があります。


<VirtualHost *:80>
        ServerAdmin gabe@localhost
        DocumentRoot /var/www/test1
        ServerName test1.local
        ServerAlias test1
        <Directory "/var/www/test1">
                Options All
                AllowOverride All
        </Directory>
</VirtualHost>

最後の前に行を挿入したいです。

</仮想ホスト>
ブランド。私の最初の仮定は、sedを使用してタグを一致させ、交換できる必要があるということでした。これから試してみる予定ですが、誰かがこれを行うことができる既存の方法がある場合は、これについて聞きたいと思います。

ベストアンサー1

このような:

sed 's/<\/VirtualHost>/yourlinehere\n<\/VirtualHost>/'

働く複数のファイルに対してこのコマンドを繰り返すには、次のようにします。

for i in *; do sed -i 's/<\/VirtualHost>/yourlinehere\n<\/VirtualHost>/' "$i"; done

@ChrisDown ありがとうございます。おそらくより良いでしょう(しかしテストされていません)。

find . -type f -print0 | while IFS= read -r -d '' filename;\
do sed -i 's/<\/VirtualHost>/yourlinehere\n<\/VirtualHost>/' $filename;\ 
done

おすすめ記事