You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jq从Docker镜像标签列表中筛选非latest值

解决Docker标签数组筛选非"latest"值的jq问题

你用jq 'select(. != "latest")'没得到预期结果,是因为这个表达式是对整个数组对象做判断,数组本身不等于"latest",所以会返回完整数组。要筛选数组内的元素,得先遍历每个元素再判断:

常用解决方案

1. 提取单个非"latest"元素(直接输出字符串)

用.[]展开数组里的每个元素,再筛选:

echo '["latest", "SOME_SHA"]' | jq '.[] | select(. != "latest")'

执行后会直接输出:

"SOME_SHA"

2. 保留数组格式(支持多个非"latest"元素)

如果数组里有多个非latest标签,用map()函数遍历筛选,结果还是数组:

echo '["latest", "SOME_SHA", "v1.2.3"]' | jq 'map(select(. != "latest"))'

执行后输出:

[
  "SOME_SHA",
  "v1.2.3"
]

3. 直接取第一个匹配的元素(确保唯一非latest时用)

如果确定数组里只有一个非latest值,用first()直接提取单个值:

echo '["latest", "SOME_SHA"]' | jq 'first(.[] | select(. != "latest"))'

执行后输出不带引号的字符串:

SOME_SHA

内容的提问来源于stack exchange,提问作者Bok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:36:19