版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_43215250/article/details/84872744
-
安装
CentOS下可以直接通过yum安装:yum install jq -y
-
使用方法
假设有一个名为test.json的文件,内容如下:{ "Summary": { "Version": "1.0", "Comment": [ "List1", "List2" ] } }
使用jq命令可以用描述性的语言来获取json文件中的元素:
[root@localhost ~]# jq .Summary test.json { "Version": "1.0", "Comment": [ "List1", "List2" ] } [root@localhost ~]# jq .Summary.Version test.json "1.0" [root@localhost ~]# jq .Summary.Comment[1] test.json "List2"
jq命令还提供一些内建函数,比如利用keys获取json文件中的所有key,has判断是否存在某个key:
[root@localhost ~]# jq 'keys' test.json [ "Summary" ] [root@localhost ~]# jq 'has("Summary")' test.json true [root@localhost ~]# jq 'has("nonexist")' test.json false
在脚本中使用jq命令
脚本中往往有这样的需求:取出json文件中的某一个元素,存储到变量中做下一步处理。但是注意到,通过jq命令取出的字符型元素是带引号的,例如:[root@localhost ~]# jq .Summary.Version test.json "1.0"
但是我们往往不需要这个引号,这时可以使用Shell提供的字符串替换功能。
-
使用
-r
参数[root@dc-controler dbconf]# jq -r 'keys' test.json Summary
-
编写脚本example.sh进行示例:
#!/bin/bash Var1=$(jq .Summary.Version test.json) echo "Var1: $Var1" Var2=${Var1//\"/} echo "Var2: $Var2"
执行该脚本可以看到,Var2被去除了引号
[root@localhost ~]# ./example.sh Var1: "1.0" Var2: 1.0
其实这是用了字符串的替换语法:
# //代表全部替换 ${Str//"被替换的内容"/"替换的内容"}
在上述脚本中,我们想删除掉",那么可以理解成将"替换成空,因此就可以用脚本中所示的语法来处理了:
Var2=${Var1//\"/}
-