Usando sed para habilitar arquivos .htaccess na configuração do Apache

13

Estou tentando automatizar o provisionamento de uma caixa do Ubuntu Vagrant com um script Bash. Tudo está bem, mas estou tendo dificuldades em configurar o Apache para permitir substituições de .htaccessarquivos. No meu arquivo de configuração, existe o seguinte bloco:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

Todos necessidade I a fazer é substituir AllowOverride Nonecom AllowOverride all. Isso parece ser uma tarefa para sed, mas existem outros <Directory>blocos neste arquivo de configuração em que eu não quero permitir a substituição.

Como posso usar sed para substituir uma sequência específica por uma nova, quando essa sequência específica ocorre entre duas outras sequências específicas?

Em outras palavras, como posso substituir AllowOverride Noneapenas quando aparece entre <Directory /var/www/>e </Directory>?

Posso usar o seguinte comando para obter o bloco em que estou interessado:

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default
Brad
fonte

Respostas:

13

sed suporta intervalos de padrões neste formato:

sed '/startpattern/,/endpattern/ <sed-commands>' file

Por exemplo:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf
suspeito
fonte
Era isso que eu estava procurando!
captainblack