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 ^
    ...
Другие вопросы по тегам