2

sed を使用した複数行の検索/置換に苦労しています。ファイルは、デフォルトの apache vhost です。

<VirtualHost *:80>
 ...
 <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
 </Directory>
    ...
</VirtualHost>

私が望むのは、AllowOverride None を AllowOverride All に置き換えることです。私が思いついたsedコマンドは次のとおりです。

sed -r -i 's/(Directory \/var\/www\/>[^<]*AllowOverride) All/$1 None/gm' /etc/apache2/sites-available/default

正規表現は私のテストに基づいて正常に動作しますが、sed では動作しません。ここで私が間違っていることを知っていますか?

ありがとう

4

2 に答える 2

0

これは次の方法でも実行できますawk

awk '/Directory \/var\/www\// , /\/Directory/ {sub(/AllowOverride None/,"AllowOverride All")} 1'

ブロック<Directory /var/www/> ... </Directory>AllowOverride NoneAllowOverride All

于 2013-10-01T17:48:52.047 に答える