Shell脚本中解析、修改json字符串

本文介绍了在项目中不依赖jq工具的情况下,如何使用awk和sed命令解析和修改json字符串,包括解析单个和数组形式的json,以及修改json字段值的实际示例。
该文章已生成可运行项目,

最近,项目遇到Shell脚本中需要解析、修改json字符串的功能,第一反应肯定是使用jq工具,但前提是项目环境中必须安装了jq工具包,否则无法直接使用jq命令。而实际生产环境中不一定安装了jq工具包,或者客户方不一定让安装这个jq工具包,那还有没有其他方式可以实现这个功能呢?其实除了使用jq工具外,还可以使用awk和sed命令来实现解析、修改json字符串的功能。

一、解析json字符串和数组:
1、解析json字符串:
[root@huai ~]# info='{"username":"Evelyn","id":"306986359","age":23,"city":"Bei Jing"}'
[root@huai ~]# name=$(echo "$info" | awk -F '[:,}]' '{for(i=1;i<=NF;i++) if($i~/username/){print $(i+1)}}' | sed 's/"//g')
[root@huai ~]# echo "$name"
Evelyn
2、解析json数组:
[root@huai ~]# info='[{"username":"Evelyn","id":"306986359","age":23,"city":"Bei Jing"},{"username":"Sophia","id":"306076151","age":25,"city":"Bei Jing"}]'
[root@huai ~]# name=$(echo "$info" | awk -F '[:,}]' '{for(i=1;i<=NF;i++) if($i~/username/){print $(i+1)}}' | sed 's/"//g')
[root@huai ~]# echo "$name"
Evelyn
Sophia
二、修改json字符串

假设有一个json字符串,如下:

[root@huai ~]# json='{"username":"Evelyn","id":"306986359","age":23,"city":"Bei Jing"}'

使用sed命令修改字段 “username” 的值为 “Robert”,并输出修改后的完整json字符串,结果如下:

[root@huai ~]# newJson=$(echo "$json" | sed 's/"username":"[^"]*"/"username":"Robert"/')
[root@huai ~]# echo "$newJson"
{"username":"Robert","id":"306986359","age":23,"city":"Bei Jing"}
本文章已经生成可运行项目
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值