如何按键对 JSON 进行分组并按其计数排序?

2023-12-02

我从类似于此的 jsonlines 文件开始

{ "kw": "foo", "age": 1}
{ "kw": "foo", "age": 1}
{ "kw": "foo", "age": 1}
{ "kw": "bar", "age": 1}
{ "kw": "bar", "age": 1}

请注意,每一行都是有效的 json,但整个文件不是。

我正在寻找的输出是按其出现次数排序的关键字的有序列表。像这样:

[
    {"kw": "foo", "count": 3},
    {"kw": "bar", "count": 2}
]

我可以使用以下方法对关键字进行分组和计数slurp option

jq --slurp '. | group_by(.kw) | .[] | {kw: .[0].kw, count: . | length }'

Output:

{"kw":"bar","count":2}
{"kw":"foo","count":3}

But:

  • 这个没有排序
  • 这不是有效的 JSON 数组

我发现的一个非常愚蠢的解决方案是通过两次jq :)

jq --slurp --compact-output '. | group_by(.kw) | .[] | {kw: .[0].kw, count: . | length }' sample.json \
| jq --slurp --compact-output '. | sort_by(.count)'

但我很确定比我聪明的人可以找到更优雅的解决方案。


这个没有排序

这不太正确,group_by(.foo)内部做了一个sort(.foo),因此结果按字段的排序顺序显示。看jq手册 - group_by(path_expression)

这不是有效的 JSON 数组

只需将操作括起来[..]以及领先的.是可选的。所以就这样做

jq --slurp --compact-output '[ group_by(.kw)[] | {kw: .[0].kw, count: length } ]'

如果您指的是按.count你可以进行升序排序和反向排序

jq --slurp --compact-output '[ group_by(.kw)[] | {kw: .[0].kw, count: length }] | sort_by(.count) | reverse'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何按键对 JSON 进行分组并按其计数排序? 的相关文章

随机推荐

  • 我们可以提交 xcode 6 beta 版本吗?如何为 iOS 8 准备应用程序?

    所以我已经在商店中发布了一个应用程序 现在想为 iOS8 做好准备 有些东西在 iOS8 上不再起作用 例如应用程序注册通知的方式 我通过添加新的未弃用的方法来修复它们 然而 我在某处读到 我们不应该提交使用 XCode6 beta 构建的
  • 需要更改日期格式

    我需要更改 A 列中的日期格式 我需要在其中获得类似的内容2020 年 7 月 21 日但我在电子邮件正文中收到的是这样的日期 2020 年 7 月 23 日星期四 00 00 00 GMT 0530 印度标准时间 你能帮我更改下面脚本中的
  • 解析不被括号包围的逗号

    输入是逗号分隔的字段列表 这是一个例子 tna performance ma performance 3 price 问题是某些 字段 的参数在方括号中指定 并且这些参数也有逗号 我可以使用什么正则表达式来打破逗号上的字符串 只有当它们在括
  • 输入“数字”时是否可以始终显示向上/向下箭头?

    我想始终显示输入 数字 字段的向上 向下箭头 这可能吗 到目前为止我还没有运气 http jsfiddle net oneeezy qunbnL6u HTML
  • SSL/TLS 1.2 连接问题 - PHP/SQLSRV

    我最近在 Web 服务器上禁用了 TLS 1 0 和 TLS 1 1 但这似乎对我正在运行的某些 PHP 站点造成了一些问题 有问题的错误是 Microsoft ODBC Driver 11 for SQL Server 客户端不支持加密
  • 如何在cefpython中调用MessageLoopWork?

    我做了一个简单的离屏渲染器头孢Python I used cefpython MessageLoop 但我想执行一个javascript函数browser GetFocusedFrame ExecuteFunction必须从主 UI 线程调
  • python 中的堆栈/列表 - 它如何追加?

    如果我有一个清单 list 1 apples apricots oranges 我将一个新项目添加到列表中 浆果 list 1 apples apricots oranges berries 在幕后 可以这么说 我想我记得读过Python创
  • 显示评估选择的输出 - Sublime Text Python REPL

    我正在使用 Sublime Text 3 并运行 OSX Mavericks 我正在使用 Sublime REPL 软件包 并且我已经调整了该软件包的设置 这样我就可以 show transferred text true 当打开 Pyth
  • python中将字符串与numpy数组中的格式化数字转换的最快方法是什么

    我有一个很大的 ASCII 文件 100GB 其中包含大约 1 000 000 行已知格式的数字 我尝试使用 python 对其进行处理 该文件太大 无法完全读入内存 因此我决定逐行处理该文件 fp open file name for c
  • Linq to 文件系统获取每个子文件夹中最后创建的文件

    我有一个包含一些子目录的文件夹 目录 只有那些子文件夹包含文件 我必须获取每个子文件夹中最后创建的文件的完整路径 仅需要每个子文件夹中最后创建的文件 我怎样才能做到这一点 我如何为此使用 linq to files Stem 像这样的事情会
  • 在 SSMS 中自动换行 IsNull([text], 0) 中选定文本的键盘快捷键

    是否有某种方法可以在 SQL Server Management Studio SSMS 中提供快捷方式 以便在选择文本时将该文本包装在 IsNull 语句中 例如 我突出显示以下文本 My column name 当我单击键盘快捷键时 突
  • C++ 除以 0

    我正在运行长时间模拟 我将结果记录到向量中以计算有关数据的统计信息 我意识到 从理论上讲 这些样本可能是除以零的结果 这只是理论上的 我很确定事实并非如此 为了避免修改代码后重新运行模拟 我想知道这种情况下会发生什么 我能知道是否发生了除以
  • 这两种使用express中间件的方法有区别吗?

    我遇到过两种不同的方式来定义 express use 中间件 我想知道它们之间是否有任何区别 或者它是否只是语法糖 A const app express app use cors app use responseTime app use
  • 如何使用 jQuery 添加基于 URL 的“选定”类?

    我的 wikispace 主题中有一个侧边栏链接列表 当前使用 jQuery 根据 com 之后的 URL 将类应用到每个侧边栏链接 您可以在下面的代码中看到这一点的应用 div class WikiCustomNav WikiElemen
  • 使用 Python 从私钥输入中提取公钥

    我需要从私钥生成公钥 而不需要像我们在 sshgen 中那样在本地临时位置 所以我使用这个 这里我将我的私钥作为输入传递 如下所示 在执行时 python codekey py BEGIN RSA PRIVATE KEY nMIhhhhhh
  • Web 作业上的 Windows Azure 管理库认证错误

    我构建了一个 Azure Web 作业控制台 它引用了 Windows Azure 管理库 我尝试使用公共设置方法来验证我的应用程序 该程序在我的本地运行良好 但在 Azure Web 作业上失败并出现 X509Certificates 错
  • MySQL 错误 1005?

    我正在尝试创建一个数据库 但收到一个奇怪的错误 这是我的代码 DROP TABLE IF EXISTS Person DROP TABLE IF EXISTS Address DROP TABLE IF EXISTS Email DROP
  • 如何从 CUDA C 调用 ptx 函数?

    我正在尝试找到一种从 CUDA C 调用 ptx 函数 func 的方法 假设我有一个像这样的 ptx 函数 func reg s32 res inc ptr reg s32 ptr reg s32 inc add s32 res ptr
  • 为什么名称函数表达式在函数体外部不可用[重复]

    这个问题在这里已经有答案了 命名函数表达式定义为 var ninja function myNinja 有一种我无法理解的行为 看看下面的代码 var ninja function myNinja console log typeof my
  • 如何按键对 JSON 进行分组并按其计数排序?

    我从类似于此的 jsonlines 文件开始 kw foo age 1 kw foo age 1 kw foo age 1 kw bar age 1 kw bar age 1 请注意 每一行都是有效的 json 但整个文件不是 我正在寻找的