Usando sed para habilitar archivos .htaccess en la configuración de Apache

13

Estoy tratando de automatizar el aprovisionamiento de un cuadro Ubuntu Vagrant con un script Bash. Todo está bien, pero estoy teniendo dificultades para configurar Apache para permitir anulaciones de .htaccessarchivos. En mi archivo de configuración, hay el siguiente bloque:

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

Todo lo que necesito hacer es reemplazar AllowOverride Nonecon AllowOverride all. Esto parece ser una tarea para sed, pero hay otros <Directory>bloques en este archivo de configuración donde no quiero permitir la anulación.

¿Cómo puedo usar sed para reemplazar una cadena específica con una nueva cadena, cuando esa cadena específica se produce entre otras dos cadenas específicas?

En otras palabras, ¿cómo puedo reemplazar AllowOverride Nonesolo cuando aparece entre <Directory /var/www/>y </Directory>?

Puedo usar el siguiente comando para obtener el bloque que me interesa:

sed -n '/<Directory \/var\/www\/>/,/<\/Directory>/p' 000-default
Puntilla
fuente

Respuestas:

13

sed admite rangos de patrones de esta forma:

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

Por ejemplo:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf
sospechoso
fuente
¡Esto es lo que estaba buscando!
captainblack