9 votos

El uso de sed a habilitar .htaccess archivos de configuración de Apache

Estoy tratando de automatizar el aprovisionamiento de Ubuntu Vagrant cuadro con un script de Bash. Todo está bien, pero estoy teniendo dificultades con la configuración de Apache para permitir modificaciones de .htaccess archivos. En mi archivo de configuración, es el siguiente bloque:

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

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

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

En otras palabras, cómo se puede reemplazar AllowOverride None sólo cuando aparece entre <Directory /var/www/> y </Directory>?

Puedo utilizar el siguiente comando para obtener el bloque estoy interesado en:

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

10voto

suspectus Puntos2723

sed apoya el patrón de los rangos de esta forma:

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

Por ejemplo:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

;