需要帮助解析使用jq的Json数据,我曾经使用json路径解析数据为[?(@。type =='router')]。externalIP。我不知道如何使用jq。
查询的结果应该从type = router提供.externalIp。 198.22.66.99
[
{
"externalHostName": "localhost",
"externalIP": "198.22.66.99",
"internalHostName": "localhost",
"isUp": true,
"pod": "gateway",
"reachable": true,
"region": "dc-1",
"type": [
"router"
],
"uUID": "b5f986fe-982e-47ae-8260-8a3662f25fc2"
},
]
##
答案 0 :(得分:0)
cat your-data.json | jq '.[]|.externalIP|select(type=="string")'
"198.22.66.99"
"192.22.66.29"
"192.22.66.89"
"192.66.22.79"
说明:
.[] | .externalIP | select(type=="string")
for every array entry | get field 'externalIP' | drop nulls
EDIT / ADDENDUM:过滤类型(期望路由器位于类型数组的索引0上)
cat x | jq '.[]|select(.type[0] == "router")|.externalIP'
"198.22.66.99"
"192.22.66.89"
答案 1 :(得分:0)
描述:
我想仅为数组“type”提取externalIP:[“router”]
相应的jq查询是:
.[] | select(.type==["router"]) | .externalIP
基于“router”是否属于指定类型的查询:
.[] | select(.type|index("router")) | .externalIP