You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用xmlstarlet匹配XML节点属性并更新同节点兄弟属性

修改指定MAC地址对应接口的link状态属性

现有XML文件(mg.xml)

<?xml version="1.0"?>
<domain type="kvm">
  <name>Comus</name>
  <devices>
    <interface type="network">
      <mac address="52:54:00:46:a3:25"/>
      <source network="default"/>
      <model type="virtio"/>
      <link state="down"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </interface>
    <interface type="bridge">
      <mac address="52:54:00:6c:0e:d0"/>
      <source bridge="br0"/>
      <model type="virtio"/>
      <link state="up"/>
      <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
    </interface>
  </devices>
</domain>

需求

找到MAC地址为52:54:00:46:a3:25的<interface>节点,将其下<link>元素的state属性值更新为up。

错误的尝试命令

xmlstarlet edit -L -u "/domain/devices/interface/mac[@address='52:54:00:6c:0e:d0']/@address" -v "up" mg.xml

该命令存在两个问题:

  1. 错误定位到了<mac>元素的address属性,而非目标<link>的state属性
  2. 匹配的MAC地址是另一个接口的,并非需求中指定的52:54:00:46:a3:25

正确的xmlstarlet命令

xmlstarlet edit -L -u "/domain/devices/interface[mac/@address='52:54:00:46:a3:25']/link/@state" -v "up" mg.xml

命令说明

  • -L:直接在原文件上修改(原地编辑)
  • -u:指定需要更新的节点路径,通过interface[mac/@address='xxx']筛选出包含目标MAC的接口节点,再定位到其下<link>元素的state属性
  • -v "up":将目标属性的值设置为up
  • mg.xml:待处理的XML文件

执行后预期结果

<?xml version="1.0"?>
<domain type="kvm">
  <name>Comus</name>
  <devices>
    <interface type="network">
      <mac address="52:54:00:46:a3:25"/>
      <source network="default"/>
      <model type="virtio"/>
      <link state="up"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </interface>
    <interface type="bridge">
      <mac address="52:54:00:6c:0e:d0"/>
      <source bridge="br0"/>
      <model type="virtio"/>
      <link state="up"/>
      <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
    </interface>
  </devices>
</domain>

内容的提问来源于stack exchange,提问作者Mark Grant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:27:37