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

如何在Bash中为JSON数组动态添加多组键值对

用Bash向JSON数组追加元素的可行方案

嘿,这个需求太常见了!咱直接用jq工具就能完美解决——这是处理JSON的Bash神器,几乎所有主流Linux发行版都能通过包管理器轻松安装。下面给你两种实用的实现方式,按需选择:

前提:安装jq

先确保你的系统上有jq:

  • Debian/Ubuntu系:sudo apt install jq
  • RHEL/CentOS/Fedora系:sudo dnf install jq

方法1:一次性批量追加多个元素(推荐)

如果要同时追加两组键值对,直接一次操作最高效。假设你的原JSON文件名为ips.json,执行以下命令:

jq '. += [
  {"entry": "10.20.17.0/24", "comment": "test ip3"},
  {"entry": "10.20.18.0/24", "comment": "test ip4"}
]' ips.json > temp.json && mv temp.json ips.json

命令解释:

  • . += [...]:这是jq的核心语法,意思是把括号内的新数组元素追加到原数组的末尾
  • 用临时文件temp.json中转是因为jq不能直接修改原文件,最后用mv替换原文件完成修改

方法2:用sponge简化文件替换(更省心)

如果你觉得临时文件麻烦,可以安装moreutils包中的sponge工具,它会先读取所有输入再写入目标文件,避免直接读写的冲突:

# 先安装moreutils
sudo apt install moreutils

# 一次性追加元素
jq '. += [
  {"entry": "10.20.17.0/24", "comment": "test ip3"},
  {"entry": "10.20.18.0/24", "comment": "test ip4"}
]' ips.json | sponge ips.json

验证结果

执行完命令后,你可以用以下命令查看格式化后的结果,确保符合预期:

jq . ips.json

参考数据

原JSON数组文件内容:

[ { "entry": "10.20.15.0/24", "comment": "test ip1" }, { "entry": "10.20.16.0/24", "comment": "test ip2" } ]

待追加的两组键值对:

{ "entry": "10.20.17.0/24", "comment": "test ip3" }, { "entry": "10.20.18.0/24", "comment": "test ip4" }

期望得到的最终JSON数组:

[ { "entry": "10.20.15.0/24", "comment": "test ip1" }, { "entry": "10.20.16.0/24", "comment": "test ip2" }, { "entry": "10.20.17.0/24", "comment": "test ip3" }, { "entry": "10.20.18.0/24", "comment": "test ip4" } ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:37:46