繁体   English   中英

如何通过传递输入键使用jq从json中提取特定字段值

[英]How to extract the specific field value from the json using jq by passing the input key

我有下面的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

使用您的输入,调用:

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM