【问题标题】:jq key name pattern matchjq 键名模式匹配
【发布时间】:2020-09-04 03:24:08
【问题描述】:

我有以下 JSON 输出。

{
   "kind":"NodeList",
   "apiVersion":"v1",
   "metadata":{
      "selfLink":"/api/v1/nodes",
      "resourceVersion":"6666628"
   },
   "items":[
      {
         "status":{
            "images":[
               {
                  "names":[
                     "d50d-hlx-app13:3601/n2_agent_centos@sha256:319fea95daa46243c48ad9df4c95aa6b9d3d7a2c5343f465d1a8631ee1df9f50",
                     "d50d-hlx-app13:3601/n2_agent_centos:11.0.2.1"
                  ],
                  "sizeBytes":3223825508
               },
               {
                  "names":[
                     "d50d-hlx-app13:3601/ad_agent_centos@sha256:ebd885ce640a84903ed7a32ae4cd6dff526a074579831634ec9dfbe40b0962ea",
                     "d50d-hlx-app13:3601/ad_agent_centos:11.0.2.0"
                  ],
                  "sizeBytes":1072047699
               },
               {
                  "names":[
                     "gcr.io/google-containers/kube-apiserver:v1.15.3"
                  ],
                  "sizeBytes":206843838
               },
               {
                  "names":[
                     "httpd@sha256:3cbdff4bc16681541885ccf1524a532afa28d2a6578ab7c2d5154a7abc182379",
                     "httpd:latest"
                  ],
                  "sizeBytes":165547282
               },
               {
                  "names":[
                     "gcr.io/google-containers/pause:3.1",
                     "gcr.io/google_containers/pause-amd64:3.1"
                  ],
                  "sizeBytes":742472
               }
            ]
         }
      }
   ]
}

如果其中一个键是“n2_agent_centos”,我希望输出 items->images->names 的键和值。

d50d-hlx-app13:3601/n2_agent_centos:11.0.2.1

我尝试了很多方法,都失败了。有人可以帮我吗?提前非常感谢。

【问题讨论】:

  • 键/值的输出,但您的预期输出中只有d50d-hlx-app13:3601/n2_agent_centos:11.0.2.1。请使用您正在寻找的“确切”输出更新问题。
  • 另外"d50d-hlx-app23:3601/n2_agent_centos@sha256:319fea95daa46243c48ad9df4c95aa6b9d3d7a2c5343f465d1a8631ee1df9f50" 包含您的搜索字符串,您想如何区分它和您想要的那个
  • 另外,您似乎不接受您的问题的答案 - stackoverflow.com/users/3893836/user3893836?tab=questions。说“谢谢”的方式是通过投票来确认正确的工作答案并将其标记为“接受”。见stackoverflow.com/help/someone-answersstackoverflow.com/help/accepted-answer
  • 对不起,我试图找到如何接受答案但失败了。我非常感谢其他人的帮助。

标签: json jq


【解决方案1】:

假设所示示例中的小语法错误已得到修复,以下会产生您期望的结果:

.items[].status.images[].names[]
| select(test("/n2_agent_centos:"))

您好像错过了.status

【讨论】:

    猜你喜欢
    • 2017-06-22
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多