【问题标题】:How to extract the specific field value from the json using jq by passing the input key如何通过传递输入键使用jq从json中提取特定字段值
【发布时间】:2018-12-28 19:18:36
【问题描述】:

我有以下 JSON,如果名称值与传递的输入值匹配,我想获取 ip 值。

即将输入作为 abc.com 传递,并将值作为 101.0.0.0 返回。如何使用 jq 实现这一点?

[  
  {  
     "ips":[  
        {  
           "name":"google.com",
           "value":"172.217.164.110"
        }
     ]
   },
   {
     "ips":[  
        {  
           "name":"abc.com",
           "value":"101.0.0.0"
        }
      ]
    }
]

只有当从外部传递的值与同一数组中的其他字段匹配时,我才想检索该字段的值。

即 当我将密钥作为 abc.com 传递时,它应该返回值 101.0.0.0

【问题讨论】:

    标签: json select jq


    【解决方案1】:

    根据您的输入,调用:

    jq -r --arg name abc.com '.[][][] | select(.name == $name).value'
    

    产生:

    101.0.0.0
    

    您可能还想考虑以下替代方案:

    jq -r --arg name abc.com '.. | objects | select(.ips) | .ips[] | select(.name == $name).value'
    

    或者,将谨慎抛诸脑后:

    jq -r --arg name abc.com '.. | objects | select(.name == $name).value'
    

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多