我有这个json,我想获得适合变量子网的相应子网的id.
subnet="192.168.112"
json='{
"subnets": [
{
"cidr": "192.168.112.0/24",
"id": "123"
},
{
"cidr": "10.120.47.0/24",
"id": "456"
}
]
}'
Run Code Online (Sandbox Code Playgroud)
由于jq不支持正则表达式.我发现获得正确id的唯一方法是混合grep,sed和jq,如下所示:
tabNum=$((`echo ${json} | jq ".subnets[].cidr" | grep -n "$subnet" | sed "s/^\([0-9]\+\):.*$/\1/"` - 1))
NET_ID=`echo ${json} | jq -r ".subnets[${tabNum}].id"`
Run Code Online (Sandbox Code Playgroud)
有没有办法只使用jq获取id?