LINUX.ORG.RU
ФорумAdmin

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

 


0

2

Есть настроенный апач с несколькими сайтами. Сайты прописаны в httpd-vhost.conf

Файл имеет вид:

 <VirtualHost *:80>
    ServerName www.domen1.ru
    ServerAlias domen1.ru
    ServerAdmin admin@domen1.ru
    DocumentRoot /var/www/domen1
    ErrorLog "/var/www/domen1/log/apache_error.log"
    CustomLog "logs/domen1-access.log" common
 </VirtualHost>

 <VirtualHost *:80>
    ServerName www.domen2.ru
    ServerAlias domen2.ru
    ServerAdmin admin@domen2.ru
    DocumentRoot /var/www/domen2
    ErrorLog "/var/www/domen2/log/apache_error.log"
    CustomLog "logs/domen2-access.log" common
 </VirtualHost>

 <VirtualHost *:80>
    ServerName www.domen3.ru
    ServerAlias domen3.ru
    ServerAdmin admin@domen3.ru
    DocumentRoot /var/www/domen3
    ErrorLog "/var/www/domen3/log/apache_error.log"
    CustomLog "logs/domen3-access.log" common
 </VirtualHost>

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

Ближайшая аналогичная задача решалась командой sed. Там надо было удалить блок от идентификатора до конца блока, завершаемого пустой строкой.

sed -i '/\[identificator\]/,/^$/'d /file.name
В данном случае, проблема в том, что все блоки начинаются одинаково, а идентификатор находится во второй строке блока.

Ответ на: комментарий от Zmicier

Спасибо за ответ!!!

Всё заработало с первого раза! А какую несложную альтернативу для подобных несложных задач порекомендовали бы Вы?

manik207
() автор топика
Ответ на: комментарий от sin_a

Спасибо за ответ!

Хорошая мысль, потому что действительно строк становится много.

manik207
() автор топика

Может лучше разнести объявление вхостов по отдельным файлам? Апач вроде умеет инклудить по маске.

Radjah ★★★★★
()

Мне кажется для ваших задач лучше подойдут средства управления конфигурациями, например: Ansible. Так же можно генерировать файлы конфигураций через python, данные для этих конфигураций хранить в каком-нибудь структурированном языке разметки (yaml, xml) или ini файлах. Структурированные данные легче изменять и масштабировать, чем править конфигурационные файлы через скрипты. Сегодня у вас apache, а завтра например nginx и текущие bash скрипты работать не будут.

root-localhost
()
Ответ на: Спасибо за ответ!!! от manik207

Всегда пожалуйста.

какую несложную альтернативу для подобных несложных задач порекомендовали бы

Писать обработку текстовых потоков на уроне той, что выше на Седе, можно, наверное, на любом языке.

А кое-какой сахар на всякое такое имеется, например, в АВКе:

$ awk '!/domen2/' RS= ORS='\n\n' manik.in
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от root-localhost

в каком-нибудь структурированном языке разметки

Как несложно заметить, настройки Апача именно что структурированные. Оттуда и потенциальные сложности, которые т. Маник здесь не стала принимать в расчет и решила обрабатывать с опорой на незначащие символы.

Что до мысли, что файлы настроек можно генерировать, то она, безусловно, верная.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.