JMESPpath:通过嵌套属性过滤掉

JMESPpath: filtering out by nested attributes

我正在尝试使用 JMESPath jp (https://github.com/jmespath/jp) 实用程序应用过滤器。 我的目标是仅过滤掉状态为 'ADDED' 且具有特定设备 ID(例如 0000debf17cff54b)的流。

我正在尝试这样的事情: cat test | ./jp '[][?id=="of:00002259146f7743" && state=="ADDED"]' 但结果是 []

[
  {
    "flow": [
      {
        "ethType": "0x86dd",
        "type": "ETH_TYPE"
      },
      {
        "protocol": 58,
        "type": "IP_PROTO"
      },
      {
        "icmpv6Type": 135,
        "type": "ICMPV6_TYPE"
      }
    ],
    "id": "of:00001aced404664b",
    "state": "ADDED"
  },
  {
    "flow": [
      {
        "ethType": "0x86dd",
        "type": "ETH_TYPE"
      },
      {
        "protocol": 58,
        "type": "IP_PROTO"
      },
      {
        "icmpv6Type": 136,
        "type": "ICMPV6_TYPE"
      }
    ],
    "id": "of:0000debf17cff54b",
    "state": "ADDED"
  }
]

无需使用第一个 [],[?id=='of:0000debf17cff54b' && state=='ADDED'] 即可。

使用第一个 [] 给你整个数组,不包含 idstate 键。