【发布时间】:2021-05-06 22:28:17
【问题描述】:
如何用 jq 解析这个 json 结构?它应该递归地遍历叶子(项目和组)。
我的用例是:使用 CLI 在 VCS 中创建项目和组。组可以有多个项目,组可以为空,项目必须提前创建父组。
类似的比喻是:
- 组 = 文件夹
- 项目 = 文件
- path = 格式为
/root-groups/nested-groups-level-1/nested-groups-level-2/nested-groups-level-N的绝对路径
谢谢
{
"structure":[
{
"name":"rootgroup1",
"type":"group",
"nested":[
{
"name":"nestedproject1",
"type":"project"
},
{
"name":"nestedgroup1",
"type":"group",
"nested":[
{
"name":"nestednestedproject2",
"type":"project"
}
]
}
]
},
{
"name":"rootproject1",
"type":"project"
},
{
"name":"rootgroup2",
"type":"group",
"nested": []
}
]
}
预期输出:
"rootgroup1","group",""
"nestedproject1","project","rootgroup1"
"nestedgroup1","group","rootgroup1"
"nestednestedproject2","group","rootgroup1/nestedgroup1"
"rootproject1","project",""
"rootgroup2","group",""
试试:
jq -r '.structure[] | .. | "\(.name?) \(.type?)"'
仍然不确定,如何创建父路径。
【问题讨论】:
-
你用
jq做了什么尝试,它是如何失败的?
标签: bash shell path jq recursive-datastructures