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

如何使用jq工具按主机匹配条件替换JSON对象中的指定serviceName值

针对该Ingress JSON的jq字段替换方案

可用jq命令

你可以直接使用以下命令完成指定条件的字段替换:

# 命令1(需安装moreutils包提供的sponge工具,直接修改原文件)
jq '(.spec.rules[] | select(.host == "test4.analytics.io") | .http.paths[] | select(.backend.serviceName == "ca-visual-node") | .backend.serviceName) |= "ca-visual-node-canary"' ingress.json | sponge ingress.json
# 命令2(无需额外依赖,通过临时文件更新原文件)
jq '(.spec.rules[] | select(.host == "test4.analytics.io") | .http.paths[] | select(.backend.serviceName == "ca-visual-node") | .backend.serviceName) |= "ca-visual-node-canary"' ingress.json > ingress.json.tmp && mv ingress.json.tmp ingress.json

注意请将上述命令中的ingress.json替换为你实际的JSON文件名

命令逻辑说明

  • 首先定位到spec.rules数组,筛选出host值为test4.analytics.io的规则项
  • 遍历该规则下的http.paths数组,筛选出backend.serviceName值为ca-visual-node的路径配置
  • 对匹配到的serviceName字段执行更新赋值,其余所有JSON结构和字段保持原有内容不变

如果执行时jq提示JSON格式错误,请先修正原文件中metadata.namespace末尾多余的逗号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:24:02