xmlstarlet редактировать синтаксис вставки

#xml #xmlstarlet

#xml #xmlstarlet

Вопрос:

Я пытаюсь вставить новый элемент с помощью xmlstarlet, но когда я запускаю команду, в ней просто отображается XML-файл, в который я пытаюсь вставить. Любые предложения были бы замечательными.

 xml ed -s /chkSys/machine/registry -t elem -n key -v "" -i /registry/key -t attr -n value -v "'C:Program FilesMicrosoft SQL Server'" -v path "HKLMsoftwaresymantecSymantec Endpoint ProtectionAVExclusionsScanningEngines" --net \server3e$tempchksyschksys.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 FilesMicrosoft SQL Server'" path "HKLMsoftwaresymantecSymantec Endpoint ProtectionAVExclusionsScanningEnginesDirectoryAdmin1075182566DirectoryName"/>
       </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 FilesMicrosoft SQL Server'" ^
    -i /chksys/machine/registry/key -t attr -n path ^
      -v "HKLMsoftwaresymantecSymantec Endpoint ProtectionAVExclusionsScanningEngines" ^
    OLDFILE > NEWFILE
  

Это поместит отредактированный xml в НОВЫЙ ФАЙЛ, если вы хотите изменить СТАРЫЙ ФАЙЛ напрямую, вы можете использовать опцию —inplace или -L.

 xml ed --net --inplace ^
    ...