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

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

¡Esto es lo que estaba buscando!
captainblack
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.