jq - 按值排序

2024-05-14

我有以下结构:

{"ID":"XX","guid":1}
{"ID":"YY","guid":2}
...

我尝试过运行:

jq 'sort_by(.guid)' conn.json

但是我收到一个错误:

Cannot index string with string "guid"

请您告诉我如何按 guid 对文件进行排序和/或找到 guid 最大的记录?

UPDATE

我实际上要寻找的是数据集中 GUID 最大的记录。认为排序会对我有帮助,但事实证明它非常慢

Thanks


sort_by假设它的输入是可迭代的,并通过应用来扩展它.[]在对其成员进行排序之前。您向其提供一个对象流,每个对象都会扩展为一个不可索引值的流("XX", 1等)在这种情况下,因此.guid fails.

吸食它们以使其发挥作用,例如:

jq -s 'sort_by(.guid)[]' conn.json

要提取具有最大 GUID 的对象,您不需要手动对提取的输入进行排序;对于此类任务,jq 有max_by, e.g:

jq -s 'max_by(.guid)' conn.json

and reduce,对于大输入来说这是一种更方便的构造,并且消除了吸食的需要。

jq 'reduce inputs as $in (input; if $in.guid > .guid then $in else . end)' conn.json
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jq - 按值排序 的相关文章

随机推荐