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

如何在jq中实现MAC地址匹配的大小写不敏感检查

解决govc+jq按MAC地址搜索虚拟机时的大小写不匹配及"explode input must be a string"错误

核心问题分析

报错是因为部分设备的MacAddress字段为null或非字符串类型,ascii_downcase仅能处理字符串,直接调用会触发异常;而大小写不匹配则是VMware返回的MAC地址可能是大写/小写混合格式,与你输入的目标MAC大小写规则不一致导致的。

解决方案

方案1:先筛选有效MAC字段再统一大小写比较

先过滤出MacAddress为字符串类型的设备,再将目标MAC和设备MAC都转为小写进行匹配:

govc vm.info -json | jq --arg target_mac "AA:BB:CC:DD:EE:FF" '.VirtualMachines[] | select(.Config.Hardware.Device[]? | select(.MacAddress | type == "string") | .MacAddress | ascii_downcase == ($target_mac | ascii_downcase))'

方案2:用空字符串兜底无效值再比较

将null或非字符串的MacAddress转为空字符串,避免ascii_downcase报错,同时统一大小写:

govc vm.info -json | jq --arg target_mac "AA:BB:CC:DD:EE:FF" '.VirtualMachines[] | select(.Config.Hardware.Device[]? | (.MacAddress // "") | ascii_downcase == ($target_mac | ascii_downcase))'

补充说明

  • --arg target_mac参数用于传入目标MAC地址,避免硬编码,适配不同搜索需求。
  • ascii_downcase负责统一字符串大小写,确保匹配时不受大小写差异影响。
  • 方案1会直接跳过无有效MAC的设备,方案2会将无效MAC视为空字符串处理,可根据实际场景选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:40:02