Editace/update XML souboru dávkově ve skriptu

Pro jednoduchou a rychlou editaci hodnoty v XML souboru lze s výhodou využít prográmek xmlstarlet ze stejnojmenného balíku. Pro příklad jsem zvolil následující soubor:

<settings version="2">
    <setting id="kodi_addon_instance_name">vbox</setting>
    <setting id="kodi_addon_instance_enabled" default="true">true</setting>
    <setting id="hostname">192.168.0.114</setting>
    <setting id="http_port" default="true">80</setting>
    <setting id="https_port" default="true">0</setting>
    <setting id="upnp_port" default="true">55555</setting>
    <setting id="connection_timeout" default="true">3</setting>
    <setting id="external_hostname" default="true" />
    <setting id="external_http_port" default="true">19999</setting>
    <setting id="external_https_port" default="true">0</setting>
    <setting id="external_upnp_port" default="true">55555</setting>
    <setting id="external_connection_timeout" default="true">10</setting>
    <setting id="set_channelid_using_order" default="true">0</setting>
    <setting id="timeshift_enabled" default="true">false</setting>
    <setting id="timeshift_path" default="true">special://userdata/addon_data/pvr.vbox</setting>
</settings>

ve kterém potřebujeme změnit hodnotu parametru hostname na 1.2.3.4

Jednoduše to lze provést následujícím příkazem:

xmlstarlet ed -P --inplace --update "settings/setting[@id='hostname']" --value 1.2.3.4 $HOME/.kodi/userdata/addon_data/pvr.vbox/instance-settings-1.xml

použité parametry:

  • ed - edituj
  • -P - zachovej odsazení v původním XML
  • --inplace - editaci proveď přímo v původním souboru
  • --update - udělej update
  • "settings/setting[@id='hostname']" - specifikace parametru, který se má změnit
  • --value - nová hodnota, která se má nastavit

poslední parametr je cesta k 'editovanému' souboru.

Views: 48

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *