Chinaunix

标题: json文本替换问题求助 [打印本页]

作者: mir620    时间: 2017-04-25 09:59
标题: json文本替换问题求助
root@buildserver:/tmp# cat json
{
   "authcenter":
   {
       "module_version":"V01R01B19_20170418-5221",
       "server_version":"V01R01B18_20170418-5221",
       "web_version":"V01R01B16_20170418-5120"
   },
   "cas":
   {
       "module_version":"V01R01B22_20170418-5221",
       "server_version":"V01R01B11_20170418-5221",
       "web_version":"V01R01B17_20170418-5120"
   },
   "dcmp":
   {
       "module_version":"V01R01B19_20170418-5221",
       "server_version":"V01R01B19_20170418-5221",
       "web_version":"V01R01B16_20170418-5120",
       "pc_version":"V01R01B16_20170418-5120"
   },
   "ues":
   {
       "module_version":"V01R01B19_20170418-5221",
       "web_version":"V01R01B16_20170418-5120"
   }
}

每个模块的版本号“"module_version":"V01R01B19_20170418-5221",”可能会重复,  所以不知道咋替换了,求大神帮我,谢谢


比如只想替换dcmp模块的"module_version":"V01R01B19_20170418-5221",     咋搞


作者: mir620    时间: 2017-04-25 10:13
有会的吗自己顶下
作者: mir620    时间: 2017-04-25 10:44
root@buildserver:/tmp# sed -e '/dcmp/,/^[[:space:]]*\}/s/web.*V01R01B16_20170418-5120/web_version": 8888888888888888888/g' json
{
   "authcenter":
   {
       "module_version":"V01R01B19_20170418-5221",
       "server_version":"V01R01B18_20170418-5221",
       "web_version":"V01R01B16_20170418-5120"
   },
   "cas":
   {
       "module_version":"V01R01B22_20170418-5221",
       "server_version":"V01R01B11_20170418-5221",
       "web_version":"V01R01B17_20170418-5120"
   },
   "dcmp":
   {
       "module_version":"V01R01B19_20170418-5221",
       "server_version":"V01R01B19_20170418-5221",
       "web_version": 8888888888888888888",
       "pc_version":"V01R01B16_20170418-5120"
   },
   "ues":
   {
       "module_version":"V01R01B19_20170418-5221",
       "web_version":"V01R01B16_20170418-5120"
   }
}



感觉太复杂了

还有没有更好的
作者: haooooaaa    时间: 2017-04-25 10:46
  1. sed -r '/"dcmp"/,/}/{/module/s/V01R[^"]+/88888/;b}'
复制代码

作者: yinyuemi    时间: 2017-04-25 13:31
回复 1# mir620

用jq
作者: mir620    时间: 2017-04-25 13:35
回复 5# yinyuemi

jq 只能取值吧
作者: yinyuemi    时间: 2017-04-25 14:05
回复 6# mir620

必须可以修改啊
作者: Shell_HAT    时间: 2017-04-25 15:50
  1. jq '.dcmp.module_version = "V01R01B19_20170418-5222"' json
复制代码

作者: mir620    时间: 2017-04-26 11:07
回复 8# Shell_HAT

牛逼大神

膜拜






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2