【发布时间】:2015-07-15 18:16:33
【问题描述】:
我有这个 json,我想获取适合变量子网的相应子网的 id。
subnet="192.168.112"
json='{
"subnets": [
{
"cidr": "192.168.112.0/24",
"id": "123"
},
{
"cidr": "10.120.47.0/24",
"id": "456"
}
]
}'
因为 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"`
有没有办法只使用 jq 获取 id ?
【问题讨论】:
-
jq 1.5 支持正则表达式。考虑使用它。