如何用Nebius Cloud CLI+JQ提取文件夹名称与ID并生成标准JSON
问题描述
使用nebius-cloud-cli(yc命令)仅列出账号下所有网络对应的文件夹名称与ID时,执行以下命令:
yc vpc networks list --format json | jq ".[]"
得到的是多行独立的JSON对象(非标准JSON流):
{ "id": "ccm979ujel7gpcq6aulc", "folder_id": "b489aa1fe17nphuomth8", "created_at": "2022-12-12T17:47:24Z", "name": "default", "description": "Auto-created network" } { "id": "ccmn8qvg1uaaaiblc05e", "folder_id": "b4aaav1fe1gnphuomth8", "created_at": "2022-12-29T12:07:40Z", "name": "my-network" } { "id": "campid2asepq3bc68fn6", "folder_id": "b489kv3ae1ga1huomth8", "created_at": "2021-12-18T09:54:01Z", "name": "my-nw", "description": "Auto-created network" }
期望得到的标准JSON数组输出为:
[ {"name": "default", "folder_id": "b489aa1fe17nphuomth8" }, {"name": "my-network", "folder_id": "b4aaav1fe1gnphuomth8" }, {"name": "my-nw", "folder_id": "b489kv3ae1ga1huomth8" } ]
要求使用简单的转换方法,不使用bash重定向、awk这类工具。
解决方案
直接调整jq命令,无需拆分JSON结构,提取所需字段并重组为标准数组即可:
方法一(适配yc输出为标准JSON数组的情况)
如果yc vpc networks list --format json本身输出完整JSON数组,执行以下命令:
yc vpc networks list --format json | jq '[ .[] | {name, folder_id} ]'
方法二(适配yc输出为JSON Lines格式的情况)
如果yc输出的是多行独立JSON对象,使用jq的--slurp(简写-s)选项合并所有对象为数组,再提取目标字段:
yc vpc networks list --format json | jq -s 'map({name, folder_id})'
上述命令均会输出包含name和folder_id的标准JSON数组,完全满足需求且未使用禁止的工具。
内容的提问来源于stack exchange,提问作者Mickey Perlstein
相关产品推荐
相关产品推荐

