Verwenden von sed zum Aktivieren von .htaccess-Dateien in der Apache-Konfiguration

13

Ich versuche, die Bereitstellung einer Ubuntu Vagrant-Box mit einem Bash-Skript zu automatisieren. Alles ist gut, aber ich habe Schwierigkeiten, Apache so zu konfigurieren, dass Überschreibungen von .htaccessDateien möglich sind. In meiner Konfigurationsdatei gibt es den folgenden Block:

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

Alles , was ich tun muß , ist ersetzen AllowOverride Nonemit AllowOverride all. Dies scheint eine Aufgabe zu sein sed, aber es gibt andere <Directory>Blöcke in dieser Konfigurationsdatei, in denen ich das Überschreiben nicht zulassen möchte.

Wie kann ich sed verwenden, um eine bestimmte Zeichenfolge durch eine neue Zeichenfolge zu ersetzen, wenn diese bestimmte Zeichenfolge zwischen zwei anderen bestimmten Zeichenfolgen auftritt?

Mit anderen Worten, wie kann ich AllowOverride Nonenur ersetzen , wenn es zwischen <Directory /var/www/>und erscheint </Directory>?

Ich kann den folgenden Befehl verwenden, um den Block zu erhalten, an dem ich interessiert bin:

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

Antworten:

13

sed unterstützt Musterbereiche in dieser Form:

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

Beispielsweise:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf
Verdächtiger
quelle
Das habe ich gesucht!
Captainblack