bash скрипт для редактирования xml файла - PullRequest
10 голосов
/ 12 октября 2009

Я хочу отредактировать файл конфигурации программы в формате XML:

<software>
   <settings>
       ...
       <setting name="local directory" type="string">/home/username/</setting>
       ...
   </settings>
</software>

Какой самый простой способ сделать это из скрипта bash?

Спасибо

Ответы [ 4 ]

20 голосов
/ 08 июля 2010

Использование 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  
11 голосов
/ 12 октября 2009

В зависимости от того, что вы хотите сделать, вы можете использовать некоторые специфичные для XML инструменты (для обработки кодировок символов, для поддержания правильной XML-формы и т. Д.). Вы можете использовать обычные линейно-ориентированные инструменты, но если вы не будете осторожны (или делаете что-то тривиальное), вы можете легко создать несовместимый XML.

Я использую набор командной строки XMLStarlet . Это набор утилит командной строки для специального анализа / манипулирования XML.

0 голосов
/ 12 октября 2009

Ужасно / небезопасно, но иногда проще всего вызвать sed / perl / awk из bash

0 голосов
/ 12 октября 2009

Большинство людей, вероятно, использовали бы sed для редактирования строк из bash-скрипта. если ты на самом деле нужно проанализировать XML, а затем использовать что-то вроде Perl, у которого есть готовый анализатор XML.

...