我有以下结构:
{"ID":"XX","guid":1}
{"ID":"YY","guid":2}
...
我尝试过运行:
jq 'sort_by(.guid)' conn.json
但是我收到错误:
Cannot index string with string "guid"
请您告诉我如何按 guid 对文件进行排序和/或找到 guid 最大的记录?
更新
我实际上要寻找的是数据集中GUID最大的记录。认为排序会对我有帮助,但事实证明它非常慢
谢谢
最佳答案
sort_by
假设其输入是可迭代的,并在对其成员进行排序之前通过应用 .[]
来扩展它。您向其提供一个对象流,在本例中,每个对象都会扩展为不可索引值("XX", 1
等)的流,因此 .guid
失败。
吸食它们以使其发挥作用,例如:
jq -s 'sort_by(.guid)[]' conn.json
要提取具有最大 GUID 的对象,您不需要手动对提取的输入进行排序;对于此类任务,jq 有 max_by
,例如:
jq -s 'max_by(.guid)' conn.json
和reduce
,这是对于大输入更方便的构造,并且消除了slurping的需要。
jq 'reduce inputs as $in (input; if $in.guid > .guid then $in else . end)' conn.json
关于json - jq - 按值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354507/