linux - JSON - 使用 jq 获取所有匹配的对象

我正在尝试为 IP 地址白名单设置自动化。

JSON 可以在这里找到:https://ip-ranges.atlassian.com/

我需要在 JSON 中生成每个“项目”的列表,其中“产品”包含“bitbucket”(例如)。

curl https://ip-ranges.atlassian.com/ | jq -c '.items | select(.[].product | contains("bitbucket"))'

输出是

jq: error (at <stdin>:1834): array (["confluenc...) and string ("bitbucket") cannot have their containment checked

我在这里做错了什么?

来自上述 URL 的 JSON 小样本:

{
  "syncToken": 1644822802,
  "creationDate": "2022-02-14T07:13:22.789203",
  "items": [
    {
      "direction": [
        "ingress",
        "egress"
      ],
      "network": "3.26.128.128",
      "mask_len": 26,
      "region": [
        "ap-southeast-2"
      ],
      "mask": "255.255.255.192",
      "product": [
        "confluence",
        "jira",
        "bitbucket",
        "opsgenie",
        "statuspage",
        "halp",
        "trello"
      ],
      "cidr": "3.26.128.128/26"
    },.........

回答1

解决方案的所有功劳归功于 https://stackoverflow.com/users/2158479/pmf

jq -r '.items[] | select(.product | contains(["bitbucket"]))? | .cidr'

这完美地工作

相似文章

最新文章