如何使用jq检测JSON中嵌套replicas数组内的重复值
使用jq检测replicas列表重复值的方法
核心原理
判断数组是否存在重复可以通过对比「原数组长度」和「去重后数组长度」实现:如果去重后的长度小于原长度,说明存在重复值。jq内置的unique函数可直接完成数组去重操作。
常用场景解决方案
1. 筛选出所有存在重复replicas的分区条目
执行命令:
jq '.partitions[] | select( .replicas | unique | length != .replicas | length )' 你的json文件路径
针对示例输入的执行结果:
{ "topic": "mytopic1", "partition": 1, "replicas": [ 5, 5, 6 ], "log_dirs": [ "any", "any" ] }
2. 仅判断是否存在重复,直接返回布尔结果
如果不需要具体的重复条目,只需要知道整体有没有重复,执行命令:
jq 'any(.partitions[]; .replicas | unique | length != .replicas | length )' 你的json文件路径
针对示例输入的执行结果:
true
命令说明
unique:对输入的数组去重并按升序排序select(条件):保留符合条件的条目any(数组; 条件):判断数组中是否至少有一个元素符合条件,是则返回true,否则返回false
内容的提问来源于stack exchange,提问作者John Sparrow
相关产品推荐
相关产品推荐

