小编mgu*_*rin的帖子

使用jq在json中搜索正则表达式

我有这个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?

regex bash json jq

19
推荐指数
1
解决办法
2万
查看次数

标签 统计

bash ×1

jq ×1

json ×1

regex ×1