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

Shell脚本新手求助:将JSON修改Python代码转换为Shell脚本

用Shell脚本实现指定的JSON数据更新逻辑

在Shell环境中处理JSON,最便捷的工具是jq——一款轻量级的命令行JSON处理器。以下是完全匹配你需求的Shell脚本实现:

脚本实现(基于文件输入)

如果你的JSON数据保存在input.json文件中,使用以下脚本:

#!/bin/bash

# 使用jq处理JSON,完成指定更新
jq '
# 遍历所有分组下的每个数组元素
(.[] | .[]) |= (
  # 判断当前元素的key2是否为"val2"
  if .key2 == "val2" then
    # 给key3的值追加",test"
    .key3 += ",test"
    # 若存在key4,同样追加",test";不存在则保持原样
    | (if has("key4") then .key4 += ",test" else . end)
  else
    # 不符合条件的元素不做修改
    .
  end
)' input.json > output.json

# 打印更新后的结果(可选)
cat output.json

脚本实现(嵌入JSON数据)

如果需要直接在脚本中嵌入原始JSON数据,使用以下版本:

#!/bin/bash

# 原始JSON数据
original_json='{
    "group1": [
        {"key1": "val1", "key2": "val2", "key3": "val3", "key4": "val4"},
        {"key1": "bval1", "key2": "val2", "key3": "bval3"},
        {"key1": "bval1", "key2": "xval2", "key3": "bval3", "key4": "bval4"}
    ],
    "group2": [
        {"key1": "zval1", "key2": "val2", "key3": "zval3"},
        {"key1": "zbval1", "key2": "zval2", "key3": "zval3"},
        {"key1": "bval1", "key2": "xval2", "key3": "bval3"}
    ]
}'

# 处理并输出更新后的JSON
echo "$original_json" | jq '
(.[] | .[]) |= (
  if .key2 == "val2" then
    .key3 += ",test"
    | (if has("key4") then .key4 += ",test" else . end)
  else
    .
  end
)'

关键逻辑说明

  • (.[] | .[]):先遍历顶层的所有分组(如group1、group2),再遍历每个分组下的数组元素,确保所有层级的元素都被检查
  • |=:将修改后的结果写回原JSON的对应位置,保证结构不变
  • .key3 += ",test":直接对key3的值进行字符串追加操作
  • has("key4"):检查当前元素是否包含key4,避免不存在时出现错误

前置条件

确保你的系统已安装jq:

  • Debian/Ubuntu:sudo apt install jq
  • CentOS/RHEL:sudo yum install jq
  • macOS:brew install jq

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:53:24