Использование sed для включения файлов .htaccess в конфигурации Apache


13

Я пытаюсь автоматизировать подготовку окна Ubuntu Vagrant с помощью сценария Bash. Все хорошо, но у меня возникают трудности с настройкой Apache для разрешения переопределений из .htaccessфайлов. В моем конфигурационном файле есть следующий блок:

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

Все, что мне нужно сделать, это заменить AllowOverride Noneна AllowOverride all. Похоже, это задача sed, но <Directory>в этом файле конфигурации есть другие блоки, в которых я не хочу разрешать переопределение.

Как я могу использовать sed, чтобы заменить определенную строку новой строкой, когда эта конкретная строка встречается между двумя другими конкретными строками?

Другими словами, как я могу заменить AllowOverride Noneтолько тогда, когда он появляется между <Directory /var/www/>и </Directory>?

Я могу использовать следующую команду, чтобы получить интересующий меня блок:

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

Ответы:


13

sed поддерживает диапазоны паттернов в этой форме:

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

Например:

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

Это то, что я искал!
капитан черный
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.