我需要一些帮助来对jq元素数组进行排序,其中每个元素都包含一个嵌套的
tags元素数组。我的输入 JSON 如下所示:
{
"result": [
{
"name": "ct-1",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "bb"
}
]
},
{
"name": "ct-2",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "aa"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想使用sequence嵌套tags数组中标签的值进行排序,以便输出如下所示:
{
"result": [
{
"name": "ct-2",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "aa"
}
]
},
{
"name": "ct-1",
"tags": [
{
"key": "service_name",
"value": "BaseCT"
},
{
"key": "sequence",
"value": "bb"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我尝试过以下jq命令:
$ jq '.result |= ([.[] | .tags[] | select(.key == "sequence") | .value] | sort_by(.))' input.json
Run Code Online (Sandbox Code Playgroud)
但我得到以下结果:
{
"result": [
"aa",
"bb"
]
}
Run Code Online (Sandbox Code Playgroud)
如果您知道如何处理这种情况,请告诉我。
from_entries将键值对数组转换为对象,您可以sort_by像这样使用它:
.result |= sort_by(.tags | from_entries | .sequence)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |