LINUX.ORG.RU

Парсинг с помощью xmlstarlet

 


0

2

Друзья, здравствуйте! Подскажите по командам утилиты xmlstarlet. Имеется конфигурационный файл Apache httpd.conf, где есть куча записей типа: <VirtualHost :*80> ServerName test.ru ... </VirtualHost> Соответственно там свои домены у каждой из них. Периодически требуется удаление этих записей, и хочется это сделать через bash-скрипт. Возможно как-то парсить с помощью этой утилиты нужную мне запись и удалить ее? При этом не задеть остальные. Как входные данные можно использовать значение в пункте ServerName. К примеру пробовал через grep, но конструкция была не надежной.

httpd.conf к xml никакого отношения не имеет. И вместо того чтобы что-то парсить, разбей конфиг на куски по одному на вхост и просто удаляй ненужные.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

В каком смысле на куски? Я посчитал, что он содержит теги и это могло бы прокатить. К примеру как я смог получить хоть как-то: grep -B 1 mydomen.ru /etc/httpd/conf/httpd.conf && grep -A 13 mydomen.ru /etc/httpd/conf/httpd.conf. То есть он выводит строки по их кол-ву до строки где содержится заданное слово(mydomen.ru) и после, но если где-то в virtulhost был пробел между строк или еще что-то, то криво работает.

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

В каком смысле на куски?

В прямом.

vhosts/test.ru.conf:

<VirtualHost :*80> ServerName test.ru ... </VirtualHost>

vhosts/foo.ru.conf:

<VirtualHost :*80> ServerName foo.ru ... </VirtualHost>

vhosts/bar.ru.conf:

<VirtualHost :*80> ServerName bar.ru ... </VirtualHost>

http.conf

Include vhosts/*.conf

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