You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jq使用unique_by按key去重时如何保留重复项的最后一个实例

实现方案

你的需求完全可以通过unique_by实现,也可以用group_by实现更直观的逻辑,两种方案如下:

方案1:基于unique_by实现(推荐,逻辑简单性能优)

核心思路是先反转数组,让相同name的最后出现的实例排在最前面,unique_by去重时会保留首条匹配实例,最后再将数组反转回原有顺序即可。
执行命令:

cat file.json | jq 'reverse | unique_by(.name) | reverse'

补充:你当前使用的unique_by( {name} )可以简化为unique_by(.name),二者效果完全一致,写法更简洁。

方案2:基于group_by实现(逻辑更直观)

核心思路是先按name字段分组,每组直接取最后一个元素即可。
执行命令:

cat file.json | jq 'group_by(.name) | map(last)'

两种方案最终输出都和你期望的结果完全一致。


内容的提问来源于stack exchange,提问作者MaryCoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:48:03