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

11

Estou tentando automatizar o provisionamento de uma caixa do Vagrant do Ubuntu com um script Bash. Tudo está bem, mas estou tendo dificuldades em configurar o Apache para permitir substituições de arquivos .htaccess . 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>

Tudo o que preciso fazer é substituir AllowOverride None por AllowOverride all . Esta parece ser uma tarefa para sed , mas há outros <Directory> blocos neste arquivo de configuração onde eu não quero permitir a substituição.

Como posso usar o sed para substituir uma string específica por uma nova string, quando essa string específica ocorre entre duas outras strings específicas?

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

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

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default
    
por Brad 15.09.2013 / 22:19

1 resposta

11

sed suporta intervalos de padrões desta forma:

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

Por exemplo:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf
    
por 15.09.2013 / 22:27