Nic*_*ter 5 versioning json maxby jq
这是我的 JSONtest.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"
}
]
Run Code Online (Sandbox Code Playgroud)
当我使用时max_by,jq返回0.1.9而不是0.1.21可能由于引用的值:
cat test.json | jq 'max_by(.version)'
{
"name": "nodejs",
"version": "0.1.9",
"apiVersion": "v1"
}
Run Code Online (Sandbox Code Playgroud)
如何获取 version=0.1.21 的元素?
不支持开箱即用的语义版本jq比较。您需要尝试按以下方式分割字段.
jq 'sort_by(.version | split(".") | map(tonumber))[-1]'
Run Code Online (Sandbox Code Playgroud)
从中split(".")获取字符串.version并创建一个字段数组,即0.1.21成为一个数组[ "0", "1", "21"]并map(tonumber)获取输入数组并将字符串元素转换为数字数组。
该sort_by()函数对上一步生成的数组中的每个元素进行索引比较,并与0.1.21最后包含版本的对象按升序排序。表示法[-1]是从这个排序数组中获取最后一个对象。
| 归档时间: |
|
| 查看次数: |
3530 次 |
| 最近记录: |