Bash script для редактирования xml файла
Я хочу отредактировать файл конфигурации программы, которая представляет собой XML:
<software>
<settings>
...
<setting name="local directory" type="string">/home/username/</setting>
...
</settings>
</software>
Каков самый простой способ сделать это из bash script?
Спасибо
Ответы
Ответ 1
В зависимости от того, что вы хотите сделать, вы можете использовать некоторые инструменты, специфичные для XML (для обработки кодировок символов, поддержания корректности XML и т.д.). Вы можете использовать обычные инструменты, ориентированные на линию, но если вы не будете осторожны (или делаете что-то тривиальное), вы можете легко создать несоответствующий XML.
Я использую набор команд XMLStarlet. Это набор утилит командной строки для специфического синтаксического разбора/управления XML.
Ответ 2
Использование xmlstarlet:
xmlstarlet val -e file.xml
xmlstarlet ed -u "//settings/setting/@name" -v 'local directory2' file.xml
xmlstarlet ed -u "//settings[1]/setting/@name" -v 'local directory2' file.xml
# edit file inplace
xmlstarlet ed -L -u "//settings/setting/@name" -v 'local directory2' file.xml
Ответ 3
Большинство людей, вероятно, будут использовать sed для редактирования строки из bash script. если ты
на самом деле заботиться о разборе XML, а затем использовать что-то вроде Perl, у которого есть готовый XML-парсер.
Ответ 4
Уродливое/небезопасное, но иногда самое простое - вызвать sed/perl/awk из bash