Перезагрузка с kexec без установки по умолчанию и наоборот

Для этого можно использовать анализатор XML. Напримерxmlstarlet(XML-инструмент командной строки):

$ xmlstarlet ed -u '//client-version' -v '1.2.9' file.xml

1.2.9

Приведенная выше команда найдет все вхождения узла документа client-versionи изменит их значения на строку 1.2.9.

Чтобы изменить только те, что 1.2.8, вы должны использовать

xmlstarlet ed -u '//client-version[text() = "1.2.8"]' -v '1.2.9' file.xml

Перенаправьте вывод в новый файл, проверьте его и переименуйте в исходное имя файла или запустите xmlstarletс параметрами -Lили --inplace, чтобы отредактировать файл в месте -.


Использование xq, из yq, из https://kislyuk.github.io/yq/, что позволяет использовать jqвыражения для изменения XML-документов:

xq -x '(..|."client-version"? // empty) |= "1.2.9"' file.xml

Это обновляет значение каждого узла client-versionна 1.2.9независимо от того, где в документе он расположен.

Строка 1.2.9может быть вставлена ​​из такой переменной:

new_version=1.2.9
xq -x --arg ver "$new_version" '(..|."client-version"? // empty) |= $ver' file.xml

0
02.07.2020, 00:18
1 ответ

Это просто:

systemctl kexec
0
18.03.2021, 23:25

Теги

Похожие вопросы