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

如何通过Linux命令行交换JSON文件中两个对象的Weight值?

在Linux命令行交换JSON中两个TargetGroup的Weight值

要完成这个需求,最实用的工具是jq——一款专门用于命令行处理JSON的工具。以下是两种针对性的实现方法:

  • 方法一:根据Weight值匹配替换(适配Weight位置不固定的场景)
    假设你的JSON文件名为elb-config.json,执行以下命令:

    jq '.[0].ForwardConfig.TargetGroups |= [(.[] | if .Weight == "100" then .Weight = "0" elif .Weight == "0" then .Weight = "100" else . end)]' elb-config.json > updated-elb-config.json
    

    该命令会遍历TargetGroups数组内的所有对象,将值为"100"的Weight改为"0",值为"0"的改为"100",其余内容保持不变,结果会输出到新文件updated-elb-config.json中。

  • 方法二:固定交换数组前两个元素的Weight(适配确定只有两个TargetGroup的场景)
    如果明确TargetGroups数组内只有两个对象,可以直接交换它们的Weight值:

    jq '.[0].ForwardConfig.TargetGroups as $tg | 
        .[0].ForwardConfig.TargetGroups[0].Weight = $tg[1].Weight | 
        .[0].ForwardConfig.TargetGroups[1].Weight = $tg[0].Weight' elb-config.json > updated-elb-config.json
    

    这里先将TargetGroups数组暂存到变量$tg,再分别把两个元素的Weight设置为对方的原始值。

  • 直接修改原文件
    若你的jq版本为1.6及以上,可使用-i选项直接覆盖原文件,无需输出到新文件:

    jq -i '.[0].ForwardConfig.TargetGroups as $tg | 
        .[0].ForwardConfig.TargetGroups[0].Weight = $tg[1].Weight | 
        .[0].ForwardConfig.TargetGroups[1].Weight = $tg[0].Weight' elb-config.json
    

执行命令后,可通过cat updated-elb-config.json(或原文件)查看内容,确认两个Weight值已完成交换,与目标内容一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:52:40