使用jq搜索指定字符串并输出非LATEST的父级name值
jq匹配指定字符串并过滤父级字段实现方案
需求说明
需要处理指定结构的JSON数据,实现以下逻辑:
- 查找值为
SEARCH-TEXT的目标内容 - 定位匹配内容所属的
results数组下的父级标签对象 - 若该父级对象的
name字段值不为LATEST,则输出对应name的取值 - 针对提供的样例JSON,预期输出结果为
NOT-LATEST
正确实现命令
jq -r '.results[] | select(any(.images[]; .digest == "SEARCH-TEXT")) | select(.name != "LATEST") | .name' input.json
命令逻辑说明
.results[]:遍历根节点下results数组的每一个标签条目select(any(.images[]; .digest == "SEARCH-TEXT")):筛选出子级images数组中存在digest值为SEARCH-TEXT的标签条目,适配单个标签下关联多个镜像的场景select(.name != "LATEST"):过滤掉name字段等于LATEST的条目.name:输出符合所有条件条目的name字段值,参数-r用于输出无引号的原始字符串格式
样例运行结果
在提供的样例JSON上执行上述命令,将直接输出:
NOT-LATEST
内容的提问来源于stack exchange,提问作者theautomation
相关产品推荐
相关产品推荐

