gpt4 book ai didi

json - jq 找到引用值中的最大值

转载 作者:行者123 更新时间:2023-12-03 21:18:49 28 4
gpt4 key购买 nike

这是我的 JSON test.json文件 :

[
{
"name": "nodejs",
"version": "0.1.21",
"apiVersion": "v1"
},
{
"name": "nodejs",
"version": "0.1.20",
"apiVersion": "v1"
},
{
"name": "nodejs",
"version": "0.1.11",
"apiVersion": "v1"
},
{
"name": "nodejs",
"version": "0.1.9",
"apiVersion": "v1"
},
{
"name": "nodejs",
"version": "0.1.8",
"apiVersion": "v1"
}
]

当我使用 max_by , jq返回 0.1.9而不是 0.1.21可能是由于引用的值:
cat test.json | jq 'max_by(.version)'
{
"name": "nodejs",
"version": "0.1.9",
"apiVersion": "v1"
}

如何获取 version=0.1.21 的元素?

最佳答案

Semantic version jq 中不支持开箱即用的比较.您需要处理由 . 分割的字段。

jq 'sort_by(.version | split(".") | map(tonumber))[-1]'
split(".").version 获取字符串并创建一个字段数组,即 0.1.21成为 [ "0", "1", "21"] 的数组和 map(tonumber)接受输入数组并将字符串元素转换为数字数组。
sort_by()函数对上一步生成的数组中的每个元素进行索引比较,并与包含版本 0.1.21 的对象按升序排序。最后。书写方式 [-1]是从这个排序数组中获取最后一个对象。

关于json - jq 找到引用值中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57071166/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com