jq - 如何将数据保存在 JQ 的变量中?
问题描述
JQ 播放示例 https://jqplay.org/s/wPDeHoMBxS
目标
对于具有不同日期的唯一名称,我有多行 (20) 数据。我想要一行包含名称、第一行的日期和第 20 行的日期。
{"pos":1,"date":"2020-12-04","name":"ABC"}
{"pos":2,"date":"2020-12-03","name":"ABC"}
.
.
.
.
{"pos":20,"date":"2020-11-04","name":"ABC"}
给定示例中的预期输出。
"\"2020-12-04\",2020-11-04,\"ABC\""
"\"2020-12-04\",2020-11-04,\"DEF\""
解决方案
您可以为此使用该group_by()
功能。先靠后.name
场。尝试一次使用一个管道运行下面的表达式,以可视化每个函数是如何形成的。sort
.date
[ inputs ] |
group_by(.name)[] |
sort_by(.date) |
[ last, first ] |
[ .[0].date,
.[1].date,
.[0].name
] |
@csv
jqplay.org上的工作演示
或者如果要求严格查找.pos
20 的对象,请执行显式select()
[ inputs ] |
group_by(.name)[] |
sort_by(.date) |
map(select(.pos == 1 or .pos == 20))
[ .[0].date,
.[1].date // "",
.[0].name
] |
@csv
速记// ""
更新一个空字符串,以防该.date
字段不可用于查找。
推荐阅读
- sql - LINQ 构建错误的 SQL 查询
- typescript - 如何在 Typescript 中使用引用其他字符串枚举的字符串枚举进行详尽的 switch 案例
- reactjs - 使用 react-csv 时导出的 CSV 中缺少最后一行
- sql - 在sql中查找仅具有满足设定条件的值的组
- ios - 如何在 Moya 中添加参数?
- bash - Shell 从带有尾部的文件中读取
- php - 如何隐藏从url获取变量名
- kubernetes - prometheus 不会从 kubernetes 集群中的 treafik 服务中提取数据
- ruby-on-rails - 在 Rails 6 API 模式上使用 JBuilder
- clojure - 有没有办法在 Clojure 中返回集合的最后一个元素?