сценарий bash для редактирования xml-файла
Я хочу отредактировать файл конфигурации программы, которая является XML:
<software>
<settings>
...
<setting name="local directory" type="string">/home/username/</setting>
...
</settings>
</software>
какой самый простой способ сделать это с bash-скрипт?
спасибо
4 ответов
в зависимости от того, что вы хотите сделать, вы можете использовать некоторые XML-инструменты (для обработки кодировок символов, для поддержания XML-правильности и т. д.). Вы можете использовать обычные линейно-ориентированные инструменты, но если вы не будете осторожны (или делать что-то тривиальное), вы можете легко создать несоответствующий XML.
Я использую XMLStarlet командная строка набора. Это набор утилит командной строки для конкретного анализа / управления XML.
С помощью 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
большинство людей, вероятно, использовали бы sed для редактирования строк из сценария bash. Если вы на самом деле заботиться о разборе XML, а затем использовать что-то вроде Perl, который имеет готовый синтаксический анализатор XML.