jq如何筛选指定ID值的JSON路径并输出点分隔格式路径
解决方案
直接执行以下jq命令即可得到预期结果:
jq -r 'paths(select(.ID == "something")) | join(".") + ".ID"' target.json
paths(select(.ID == "something")):递归遍历所有JSON节点,仅保留直接下属ID键值为something的父节点路径,自动过滤B.ID这类值不匹配的项join("."):将jq默认返回的数组格式路径,拼接为点分隔的字符串-r参数:启用原始输出模式,结果不会额外包裹JSON格式的双引号- 末尾拼接
".ID":补全完整路径,因为上述匹配逻辑定位到的是ID键的上一级父节点
输出结果
针对提供的示例JSON,命令执行后输出如下,完全匹配预期:
A.ID C.ID D.E.ID
内容的提问来源于stack exchange,提问作者Raz Luvaton
相关产品推荐
相关产品推荐

