ai didi

json - 使用 jq 在 json 中进行类似正则表达式的搜索

转载 作者:行者123 更新时间:2023-11-29 08:45:21 24 4
gpt4 key购买 nike

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

最佳答案

我不太清楚您提供的脚本的作用,但它似乎只查找包含提供的子集的字符串。我建议使用 containsstartswith .示例脚本如下所示:

echo "${json}" | jq --arg subnet "$subnet" '.subnets[] | select(.cidr | startswith($subnet)).id'

既然你提到了正则表达式:jq 的最新版本 1.5 包括正则表达式支持(感谢 Jeff Mercado 指出了这一点!)而且,如果你必须经常处理字符串操作问题,我建议你检查一下.

关于json - 使用 jq 在 json 中进行类似正则表达式的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31438087/

24 4 0
文章推荐: bash - 如何检查符号链接(symbolic link)目标是否与特定路径匹配?
文章推荐: php - 在一个id中保存一个变量的多于1个数据
文章推荐: java - android.view.InflateException 错误膨胀类 com.etsy.android.grid.StaggeredGridView
文章推荐: php - 如何在没有 PDO 的情况下使 Drupal 工作
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com