如何用单条jq命令合并输出.next字段与符合条件的digest值
单次curl请求同时提取Docker Hub镜像标签两个字段的实现方案
需求说明
需要从Docker Hub标签接口返回的JSON中提取两个目标值:
- 顶层字段
.next(下一分页的接口地址) - 满足
.name == "latest"且镜像architecture == "amd64"条件的条目对应的.digest字段值
要求仅发起一次curl请求,单次输出两个结果,格式为:[amd64架构latest标签的digest值], [下一页链接]
参考返回JSON结构(截取核心片段)
{ "count": 685, "next": "https://hub.docker.com/v2/repositories/grafana/grafana/tags/?page=2&page_size=100", "previous": null, "results": [ { "creator": 4132603, "id": 190096972, "images": [ { "architecture": "amd64", "digest": "sha256:1e180fcaede581b8cc8e2ce8bc010daff9c64972023a0faaf226d92bd9840113", "os": "linux" }, { "architecture": "arm64", "variant": "v8", "digest": "sha256:834e26ec5e5f4e5eb2410147c12b060143906de04f35eb51cae8285e9b646a56", "os": "linux" }, { "architecture": "arm", "variant": "v7", "digest": "sha256:3bc954cb89f35bdc0705a381ab9b9a49b014074fbc555c61bf7572cb0965f323", "os": "linux" } ], "name": "latest" } ] }
原有单独执行的命令
- 获取amd64架构latest标签digest:
curl -s "https://hub.docker.com/v2/repositories/grafana/grafana/tags/" | jq --raw-output '.results[] | select(.name=="latest").images[] | select(.architecture=="amd64").digest'
输出:sha256:1e180fcaede581b8cc8e2ce8bc010daff9c64972023a0faaf226d92bd9840113
- 获取下一页链接:
curl -s "https://hub.docker.com/v2/repositories/grafana/grafana/tags/" | jq --raw-output '.next'
输出:https://hub.docker.com/v2/repositories/grafana/grafana/tags/?page=2
最终实现命令
调整jq过滤逻辑,在同一次解析中完成两个字段的提取和格式化拼接,全程仅发起一次HTTP请求:
curl -s "https://hub.docker.com/v2/repositories/grafana/grafana/tags/" | jq -r '. as $root | [($root.results[] | select(.name=="latest").images[] | select(.architecture=="amd64").digest), $root.next] | join(", ")'
逻辑说明
- 用
. as $root保存根对象引用,避免管道切换上下文后无法访问顶层.next字段 - 字段筛选逻辑和原有命令完全一致,不会出现取值偏差
- 将digest和
.next两个值按输出顺序存入数组 - 通过
join(", ")将数组元素拼接为逗号分隔的字符串 -r(即--raw-output)参数直接输出纯文本,不带JSON字符串的引号包裹
执行后直接输出符合要求的结果:
sha256:1e180fcaede581b8cc8e2ce8bc010daff9c64972023a0faaf226d92bd9840113, https://hub.docker.com/v2/repositories/grafana/grafana/tags/?page=2&page_size=100
内容的提问来源于stack exchange,提问作者theautomation
相关产品推荐
相关产品推荐

