json - jq 删除重复的对象之一

标签 json linux jq

我有一个这样的 json 文件:

{"caller_id":"123321","cust_name":"abc"}
{"caller_id":"123443","cust_name":"def"}
{"caller_id":"123321","cust_name":"abc"}
{"caller_id":"234432","cust_name":"ghi"}
{"caller_id":"123321","cust_name":"abc"}
....

我试过:

jq -s 'unique_by(.field1)' 

但是这将删除所有重复的项目,我希望只保留一个重复的项目,以获得这样的文件:

{"caller_id":"123321","cust_name":"abc"}
{"caller_id":"123443","cust_name":"def"}
{"caller_id":"234432","cust_name":"ghi"}
....

最佳答案

对于 field1,我怀疑您在输出中得到了什么,因为没有给定名称的键/字段。如果您只是将命令更改为 jq -s 'unique_by(.caller_id)',它将为您提供所需的结果,其中包含基于 caller_id 键的唯一和排序对象。它将确保每个 caller_id 至少有一个对象。

注意:与@Jeff Mercado 在评论中的解释相同。

关于json - jq 删除重复的对象之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51619317/

相关文章:

javascript - 如何从重定向的支付处理器站点提取交易详细信息并保存到我的 Rails 4 db

javascript - 如何浏览一个javascript对象

java - 标准错误未从 bash 中的此 java 命令重定向

json - 如何在jq中多次分配字段值?

java - Android,在应用程序中显示 JSON 数据

linux - ANDROID_HOME 不会设置并且 Cordova 项目不会构建

linux - 从 12 小时制转换为 24 小时制排序 awk

json - 在 bash 中将 CSV 转换为 JSON

json - 在 dos/windows 中隐藏 jq 的状态输出

java - 无法从 START_ARRAY token 中反序列化 java.lang.String 的实例;