Bashスクリプトを使用してUbuntuVagrantボックスのプロビジョニングを自動化しようとしています。すべて順調ですが、.htaccess
ファイルからのオーバーライドを許可するようにApacheを構成するのに問題があります。私の設定ファイルには、次のブロックがあります。
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
AllowOverride None
をAllowOverride all
に置き換えるだけです。これはsed
のタスクのようですが、この構成ファイルには、オーバーライドを許可したくない他の<Directory>
ブロックがあります。
特定の文字列が他の2つの特定の文字列の間にある場合、sedを使用して特定の文字列を新しい文字列に置き換えるにはどうすればよいですか?
つまり、AllowOverride None
と<Directory /var/www/>
の間にある場合にのみ、</Directory>
を置き換えるにはどうすればよいですか?
次のコマンドを使用して、関心のあるブロックを取得できます。
sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default
sed
は、次の形式のパターン範囲をサポートします。
sed '/startpattern/,/endpattern/ <sed-commands>' file
例えば:
sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf