我具有以下JSON,如果名称值与传递的输入值匹配,我想获取ip值。
i.e将输入作为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
答案 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'