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

Я пытаюсь автоматизировать подготовку коробки Ubuntu бродяга с сценарием 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
5
задан JakeGould
источник

1 ответов

sed поддерживает диапазоны шаблонов в следующем виде:

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

например:

sed '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride all/' httpd.conf
11
отвечен suspectus 2015-10-14 17:19:06
источник

Другие вопросы apache-http-server bash linux sed ubuntu