如何使用jq获取对象数组中指定key对应的所有唯一值
方案1:纯jq实现(推荐,不依赖额外shell命令)
你可以直接使用jq内置的unique函数完成去重,命令如下:
# 输出结果会自动按字母排序,返回无重复的name值 http https://some-endpoint | jq -r 'map(.name) | unique[]'
输出结果:
Joe Michelle Steve
如果你需要 保留name在原数组中首次出现的顺序 不需要排序,可以用下面的写法:
http https://some-endpoint | jq -r 'reduce .[] as $item ({}; .[$item.name] = 1) | keys[]'
输出结果(保留原出现顺序):
Joe Steve Michelle
方案2:结合shell命令实现
如果你更习惯用shell工具处理,也可以搭配sort的去重参数完成:
# -r 参数让jq输出原始字符串,去掉返回值的双引号 http https://some-endpoint | jq -r '.[] | .name' | sort -u
内容的提问来源于stack exchange,提问作者Johnny Metz
相关产品推荐
相关产品推荐

