首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jq过滤数组中的特定条目

使用jq过滤数组中的特定条目
EN

Stack Overflow用户
提问于 2019-12-15 16:47:17
回答 1查看 65关注 0票数 0

我就长话短说吧。这就是我要处理的问题。我有一个使用curl的链接,它通过管道输出一个json格式的输出,从而使用jq过滤特定的条目。这是json文件

代码语言:javascript
复制
{
    "remote":  [
        {"name": "cast-1",
         "id": 1212
        },
        {"name": "cast-1",
         "id": 1214
        },
        {"name": "home-11",
         "id": 3212
        },
        {"name": "cast-3",
         "id": 3212
        },
        {"name": "cast-3",
         "id": 3213
        },
        {"name": "cast-4",
         "id": 4211
        }

    ]
}

我想要的输出是

代码语言:javascript
复制
 "cast-1": 1212 , 1214,
 "cast-3": 3212 , 3213,
 "cast-4": 4211,

通过我的尝试,我只能输出以下内容

代码语言:javascript
复制
 "cast-1": 1214,
 "cast-3": 3213, 
 "cast-4": 4211,

到目前为止我的代码

代码语言:javascript
复制
curl ... | jq  'reduce .remote[] as $v ({}; . + {"\($v.name)":$v.id})'  

无法计算出添加cast-1和cast-3中的第二个id。有没有一种方法可以格式化输出,以获得有效的JSON输出格式?也许是python或perl方法?我不熟悉awk,我想让你知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-15 17:03:13

这里不需要reduce,group_by就足够了。例如:

代码语言:javascript
复制
.remote | group_by(.name) | map({(.[0].name): map(.id)}) | add

https://jqplay.org/s/_0CFADWu2G

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59342412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档