gpt4 book ai didi

json - jq select() 和 sort_by()

转载 作者:行者123 更新时间:2023-12-01 05:42:30 24 4
gpt4 key购买 nike

我正在解析来自 gitlab api 的 curl 输出,我需要在我的查询中添加一个 sort_by,然后只选择某些值。

样本输入:

[
{
"id": 10,
"name": "another-test",
"path": "another-test",
"description": "",
"visibility": "private",
"lfs_enabled": true,
"avatar_url": null,
"web_url": "https://mygitlab/groups/another-test",
"request_access_enabled": false,
"full_name": "another-test",
"full_path": "another-test",
"parent_id": 9
},
{
"id": 11,
"name": "asdfg",
"path": "asdfg",
"description": "",
"visibility": "private",
"lfs_enabled": true,
"avatar_url": null,
"web_url": "https://mygitlab/groups/asdfg",
"request_access_enabled": false,
"full_name": "asdfg",
"full_path": "asdfg",
"parent_id": 7
}

我用 jq 解析 JSON 如下:
curl http://..... | jq -r '.[] | select(.parent_id!=null) | .name, .parent_id' 

这完全按预期工作,但是当我尝试按 parent_id 对结果进行排序时,出现错误:
curl http://..... | jq -r '.[] | select(.parent_id!=null) | .name, .parent_id | sort_by(.parent_id)'
jq: error (at <stdin>:0): Cannot index number with string "parent_id"

我可以使用 sort_by(),通过放置一个点而不是 .[]:
curl http://..... | jq '. | sort_by(.parent_id) '

但我不能结合这两个功能。

说明:我需要提取 name 和 parent_id,按 parent_id 排序,当它不为空时。

提前致谢

最佳答案

jq sort_by()函数接受一个数组作为输入。

curl 'http://...' |
jq -r '
map(select(.parent_id != null))
| sort_by(.parent_id)[]
| [.name, .parent_id]
| @tsv
'
示例输出:
asdfg   7
another-test 9

关于json - jq select() 和 sort_by(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49200066/

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