可在Linux命令行用jq工具直接修改JSON文件:先安装jq(如Ubuntu用sudo apt install jq),再通过jq表达式修改字段值、添加新字段、删除字段、操作数组元素,并配合重定向或sponge保存结果。

如果您需要在Linux命令行环境中直接修改JSON文件,而不想借助编程语言或图形界面编辑器,则可以使用jq工具对JSON内容进行解析、过滤和更新。以下是使用jq修改JSON文件的具体操作步骤:
一、安装jq工具
jq是一个轻量级且功能强大的命令行JSON处理器,必须先确保系统中已安装该工具。不同发行版的安装方式略有差异,但均能通过包管理器完成。
1、在Ubuntu或Debian系统中执行:sudo apt update && sudo apt install jq
2、在CentOS或RHEL 8+系统中执行:sudo dnf install jq
3、在CentOS 7或早期RHEL系统中执行:sudo yum install epel-release && sudo yum install jq
二、使用jq修改JSON字段值
jq支持通过管道读取JSON输入,并使用表达式更新指定键的值。原始文件不会被自动覆盖,需配合重定向或sponge工具保存结果。
1、将test.json中key为"name"的字段值修改为"alice":jq '.name = "alice"' test.json > temp.json && mv temp.json test.json
2、若需原地修改且避免临时文件,可安装moreutils后使用sponge:jq '.age = 30' test.json | sponge test.json
3、修改嵌套对象中的字段,例如将"profile.city"设为"shanghai":jq '.profile.city = "shanghai"' test.json > test.json
三、使用jq添加新字段
jq允许在现有JSON结构中插入新的键值对,适用于扩展配置或补充数据字段。
1、向根对象添加新字段"version"并赋值为"2.1":jq '.version = "2.1"' config.json > config.json
2、在数组末尾追加一个对象元素:jq '.items += [{"id": 4, "name": "item4"}]' data.json > data.json
3、为数组中每个对象统一添加字段"status",值为"active":jq '.users[] |= . + {"status": "active"}' users.json > users.json
四、使用jq删除JSON字段
通过jq的del()函数可移除指定路径下的键及其对应值,操作后生成精简后的JSON结构。
1、删除顶层字段"temp":jq 'del(.temp)' settings.json > settings.json
2、删除嵌套字段"profile.phone":jq 'del(.profile.phone)' user.json > user.json
3、从数组中删除满足条件的元素,例如移除所有"id"为2的对象:jq 'del(.list[] | select(.id == 2))' list.json > list.json
五、使用jq修改JSON数组元素
针对JSON中包含的数组,jq提供索引访问与条件筛选能力,可精准定位并更新特定位置或匹配项。
1、将数组第一个元素的"name"字段改为"first":jq '.array[0].name = "first"' data.json > data.json
2、将所有"type"为"error"的对象的"level"字段设为"critical":jq '(.items[] | select(.type == "error")).level = "critical"' log.json > log.json
3、替换数组中第3个元素(索引为2)的整个对象为{"id": 99, "valid": true}:jq '.arr[2] = {"id": 99, "valid": true}' arr.json > arr.json









