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

如何修改jq命令,为image-name和image-tag字段添加对应前缀?

问题:自定义jq解析输出的前缀区分image-name和image-tag

现有如下JSON文件image-data.json:

{
  "appsol": {
    "test": {
      "repository": "https://github.com/App/test.git",
      "test-broker": {
        "commit": "",
        "image-tag": "master-v2",
        "image-name": "test-broker",
        "image-repository": "us.gcr.io",
        "image-namespace": "ap-cloud"
      },
      "test-service-provider": {
        "commit": "",
        "image-tag": "master-v2",
        "image-name": "test-service-provider",
        "image-repository": "us.gcr.io",
        "image-namespace": "ap-cloud"
      }
    }
  }
}

当前使用以下jq命令解析时,会给所有输出统一添加_IMAGE 前缀:

jq -r --arg prefix "_IMAGE " '
   $prefix + (.. | objects | select(has("image-name")) | (."image-name", ."image-tag"))
' image-data.json

输出结果为:

_IMAGE test-broker
_IMAGE master-v2
_IMAGE test-service-provider
_IMAGE master-v2

需要修改jq命令,让image-name对应前缀_IMAGE ,image-tag对应前缀_VERSION ,期望输出:

_IMAGE test-broker
_VERSION master-v2
_IMAGE test-service-provider
_VERSION master-v2

解决方案

修改后的jq命令如下:

jq -r '
   .. | objects | select(has("image-name")) | 
   ("_IMAGE " + ."image-name"), ("_VERSION " + ."image-tag")
' image-data.json

逻辑说明:

  1. 保留原有筛选逻辑:递归遍历所有对象,筛选出包含image-name的对象
  2. 针对每个筛选出的对象,分别处理两个字段:
    • 对image-name字段,拼接前缀_IMAGE 后输出
    • 对image-tag字段,拼接前缀_VERSION 后输出
  3. 用逗号分隔两个输出项,确保每个对象会按顺序输出两行对应内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:03:26