如何使用jq生成扁平化的repo:tag拼接序列?
解决方案
使用jq工具(推荐,适合命令行场景)
jq是专门处理JSON数据的命令行工具,跨平台可用。执行以下命令即可得到你需要的结果:
jq -r '.[] | .repo as $r | .tags[] | "\"\($r):\(.)\""' input.json
命令说明:
.[]:遍历输入JSON数组中的每个repo对象.repo as $r:将当前对象的仓库地址存入变量$r,避免重复读取.tags[]:遍历当前对象的所有标签"\"\($r):\(.)\"":通过字符串插值拼接成带双引号的repo:tag格式
如果不需要输出双引号,去掉转义引号即可:
jq -r '.[] | .repo as $r | .tags[] | "\($r):\(.)"' input.json
使用Python脚本(适合编程场景)
如果习惯用Python处理,可编写如下脚本:
import json # 读取JSON文件(也可直接将JSON数据赋值给data变量) with open("input.json", "r") as file: data = json.load(file) # 遍历并拼接输出 for entry in data: repo_name = entry["repo"] for tag in entry["tags"]: print(f'"{repo_name}:{tag}"')
运行脚本后,会直接输出符合要求的扁平化列表。
内容的提问来源于stack exchange,提问作者Christian Bongiorno
相关产品推荐
相关产品推荐

