json - 如何 sort_by 使用 jq 获取最新对象
问题描述
所以我运行这个:
aws ec2 describe-snapshots \
--region xxxxxxxxx \
--owner-ids xxxxxxxxxxxx \
| jq '.Snapshots[] | select(.VolumeId=="vol-xxxxxxxxxxxxx")'
我得到了这个https://jqplay.org/s/SnT8lDwycY
我如何排序StartTime
并返回 latest "SnapshotId": "snap-xxxxxxxxxxxxxxxx"
?
当我添加时,| sort_by(.StartDate)'
我得到以下错误:
jq: error (at <stdin>:22106): Cannot index string with string "StartDate"
解决方案
jqplay 上显示的数据是 JSON 对象流。处理这种流的一种方法是使用 jq 的 -s 命令行选项。这实际上将它们组合成一个列表,然后可以对其进行排序。
所以如果你不关心关系,一个简单的解决方案是:
sort_by(.StartTime) | .[-1] | .SnapshotId
如果您的 jq 足够最新,则可以将其缩写为:
sort_by(.StartTime)[-1].SnapshotId
推荐阅读
- ruby-on-rails-5 - 对多个数据库运行 sidekiq 作业?
- javascript - 在具有媒体查询的 iframe 中强制解析
- c# - 在net core中获取存储过程结果
- json - 有没有什么方法可以根据登录 Flutter 的用户打开不同的主页?
- php - PDO 更新查询以使用命名占位符将数据附加到 MYSQL 数据库中
- python - 数据框对象在 python 中不可调用
- maven - 升级从父 pom 继承 maven 依赖项
- android - Firebase Android / iOS 缓存 Firestore 集合
- sql-server - 如果其中任何一条记录已更新,我如何返回一组完整的记录?
- php - 从多个表中获取与mysql中if条件匹配的记录的值