xmlstarlet изменить синтаксис вставки
Я пытаюсь вставить новый элемент с помощью xmlstarlet, но когда я запускаю команду, он просто выводит список XML-файла, в который я пытаюсь вставить. Любые предложения будут великолепны.
xml ed -s /chkSys/machine/registry -t elem -n key -v "" -i /registry/key -t attr -n value -v "'C:\Program Files\Microsoft SQL Server'" -v path "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines" --net \\server3\e$\temp\chksys\chksys.xml
##Old##
<?xml version="1.0" encoding="utf-8"?>
<chksys>
<machine>
<registry>
</registry>
</machine>
</chksys>
##New##
<?xml version="1.0" encoding="utf-8"?>
<chksys>
<machine>
<registry>
<key value="'C:\Program Files\Microsoft SQL Server'" path "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines\Directory\Admin\1075182566\DirectoryName"/>
</registry>
</machine>
</chksys>
1 ответ
Ваша команда немного отключена, вы должны использовать полный путь к ключу при вставке:
xml ed --net ^
-s /chksys/machine/registry -t elem -n key -v "" ^
-i /chksys/machine/registry/key -t attr -n value ^
-v "'C:\Program Files\Microsoft SQL Server'" ^
-i /chksys/machine/registry/key -t attr -n path ^
-v "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines" ^
OLDFILE > NEWFILE
Это поместит отредактированный xml в NEWFILE, если вы хотите изменить OLDFILE напрямую, вы можете использовать опцию --inplace или -L.
xml ed --net --inplace ^
...