Utilisation de sed pour activer les fichiers .htaccess dans la configuration Apache

13

J'essaie d'automatiser l'approvisionnement d'une boîte Ubuntu Vagrant avec un script Bash. Tout va bien, mais j'ai du mal à configurer Apache pour autoriser les remplacements à partir des .htaccessfichiers. Dans mon fichier de configuration, il y a le bloc suivant:

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

Tout ce que je dois faire est de le remplacer AllowOverride Nonepar AllowOverride all. Cela semble être une tâche pour sed, mais il y a d'autres <Directory>blocs dans ce fichier de configuration où je ne veux pas autoriser la substitution.

Comment puis-je utiliser sed pour remplacer une chaîne spécifique par une nouvelle chaîne, lorsque cette chaîne spécifique se produit entre deux autres chaînes spécifiques?

En d'autres termes, comment puis-je remplacer AllowOverride Noneuniquement lorsqu'il apparaît entre <Directory /var/www/>et </Directory>?

Je peux utiliser la commande suivante pour obtenir le bloc qui m'intéresse:

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

Réponses:

13

sed prend en charge les plages de motifs sous cette forme:

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

Par exemple:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf
suspect
la source
C'est ce que je cherchais!
captainblack