jq技术问题:基于子数组内容选择父键及提取唯一值
针对file.json的jq解决方案
问题1:获取所有子数组的唯一值列表(纯jq原生实现)
你当前用jq -r '.x[][]' file.json | sort | uniq依赖外部工具,纯jq原生可以用内置函数一步完成:
jq -r '.x | flatten | unique[]' file.json
说明:
.x定位到目标对象flatten把所有嵌套子数组展开为一维数组unique自动完成去重并返回有序结果[]将数组元素逐个输出,配合-r得到每行一个值的纯文本格式
问题2:获取包含"3"的子数组对应的父键
需要先将键值对转换为结构化条目,筛选后提取键即可:
jq -r '.x | to_entries[] | select(.value | index("3") != null) | .key' file.json
也可以用更直观的判断逻辑:
jq -r '.x | to_entries[] | select(.value[] == "3") | .key' file.json
说明:
to_entries把.x下的键值对转为{"key": "父键名", "value": ["子数组元素"]}的格式select语句筛选出子数组包含"3"的条目.key提取对应的父键名,配合-r输出纯文本
内容的提问来源于stack exchange,提问作者tpl
相关产品推荐
相关产品推荐

