json - jq - 按值排序
问题描述
我有以下结构:
{"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 的对象,您不会手动对 slurped 输入进行排序;对于此类任务,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
推荐阅读
- python - 如何在不转到下一行的情况下在两个 print() 函数之间获取输入?
- r - 如何用双行结束 Rmd pdf 中的长表
- python - BeautifulSoup:get_text() 从 bs4 标签返回空字符串
- elasticsearch - 如果这是 0 KIBANA,则从一个值中获得最高热门
- css - 为什么没有 > 这段 CSS 代码不起作用
- python - 如何减小 keras 保存模型的大小?
- python - Python pandas 数据框和列表合并
- r - 为什么在使用 library(MASS) 与 MASS:: 时会得到不同的结果?
- python - 有没有办法通过 mixin 设置 peewee 字段?
- python - 如何使用“重复且唯一”制作新列