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

如何用jq查询关联MAC与IPv4并输出指定格式的虚拟机信息

提取匹配MAC的VM IPv4地址并关联对应信息

需求

从指定JSON数据中,提取vm_network内与mac_address数组存在匹配的MAC地址对应的所有IPv4,输出格式为$guest_name, $mac_address, $ipv4,仅处理mac_address数组中包含的MAC条目。

原始JSON数据

{"virtual_machines": [
    {
      "guest_name": "guest1",
      "mac_address": [
        "00:01:02:03:04:05"
      ],
      "vm_network": {
        "00:01:02:03:04:05": {
          "ipv4": [
            "192.168.2.23"
          ],
          "ipv6": [
            "fe80::896:2e12:c059:4237"
          ]
        },
        "c2:e3:7c:ac:60:c5": {
          "ipv4": [
            "10.42.0.0"
          ],
          "ipv6": []
        },
        "5a:00:fb:5e:3d:65": {
          "ipv4": [
            "10.42.0.1"
          ],
          "ipv6": []
        }
      }
    },
    {
      "guest_name": "guest2",
      "ip_address": "172.20.8.34",
      "mac_address": [
        "10:11:12:13:14:15",
        "30:31:32:33:34:35"
      ],
      "vm_network": {
        "10:11:12:13:14:15": {
          "ipv4": [
            "172.20.8.34"
          ],
          "ipv6": []
        },
        "30:31:32:33:34:35": {
          "ipv4": [
            "172.16.172.34",
            "172.16.172.30"
          ],
          "ipv6": [
            "fe80::ad7f:c2:f621:e718"
          ]
        }
      }
    }
  ]
}

当前问题

现有jq命令仅能输出guest_name和ipv4,无法关联对应的MAC地址:

jq -r  '.virtual_machines[] | .guest_name  + ","+ (.vm_network[.mac_address[]] |.ipv4[])' < json_file

输出结果:

guest1,192.168.2.23
guest2,172.20.8.34
guest2,172.16.172.34
guest2,172.16.172.30

解决方案

使用以下jq命令,通过变量存储MAC地址和虚拟机名称,实现三者的关联输出:

jq -r '.virtual_machines[] | .guest_name as $name | .mac_address[] as $mac | .vm_network[$mac].ipv4[] | "\($name),\($mac),\(.)"' < json_file

命令解释

  • .virtual_machines[]:遍历所有虚拟机对象
  • .guest_name as $name:将当前虚拟机名称存入变量$name,便于后续复用
  • .mac_address[] as $mac:遍历当前虚拟机的每个MAC地址,存入变量$mac
  • .vm_network[$mac].ipv4[]:取出当前MAC地址对应vm_network中的所有IPv4地址
  • "\($name),\($mac),\(.)":通过字符串插值拼接成要求的格式

预期输出

guest1,00:01:02:03:04:05,192.168.2.23
guest2,10:11:12:13:14:15,172.20.8.34
guest2,30:31:32:33:34:35,172.16.172.34
guest2,30:31:32:33:34:35,172.16.172.30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:23:15