遇到json格式的数据你会怎么办,是自己编写程序处理,还是去搜索在线的json格式处理网站。这些方式都不是很方便,或者说功能不够强大,本文将介绍强大的jq命令来帮助程序员灵活处理各种json数据。
jq是一个Json格式数据处理命令,能够对json数据格式进行增删改查,jq的主要功能如下:
在大多数Linux系统中,jq可以通过包管理器直接安装,例如centos使用如下命令安装:
sudo yum install jq
如果想要使用最新的jq,可以到github上去下载,自行编译安装,见这里。
在介绍jq命令的使用方法之前,有必要简单介绍一下json的数据格式。json格式的文件主要包含对象和数据,如下:
因此使用jq命令也是主要围绕着对象和数组进行处理的。
本文以firefox流量器的extensions.json文件的内容为例进行介绍,extensions.json文件存储了firefox安装的插件信息。如下图为jq的help信息,将介绍其中主要的命令参数的用法。
图1
多数的时候针对json格式的文件,第一步就是要读懂json 格式的文件,如下:
图2
图2可以看到使用jq . 命令就会按照键值对的形式每行进行显示,我的shell还默认针对键值对进行了着色,比之cat,more等命令来说,更加容易理解json的格式。但是有一个缺点就是该文件的行数太多,如何快速的了解该Json文件的大致内容呢,见如下的查询部分。
该文件比较大,有哪些键值对呢,如下:
图3
图4
通过图3和图4的命令,基本上对于该文件的层状结构有着整体的认识。其中涉及到过滤器中的keys,length,管道符|,数组[]等功能,关于jq更多的内置功能,详见这里。
图5
图5是修改某个键的值,方法很简单,直接通过过滤器定位到对应的键值,然后赋值即可,需要注意的是,这种方式并没有修改源文件,如果想要修改文件,直接利用Linux的重定向符>输出到文件中即可。
图6
图6通过+号内置功能增加一行嵌套,但是由于只在数据的第一个元素中增加了一项,因此破坏数组的格式,不能再使用jq处理,因此使用head文本显示,可以看到数组addons[0]增加可一项,需要注意的是,这种方式并没有修改源文件,如果想要修改文件,直接利用Linux的重定向符>输出到文件中即可。
图7
图7通过del函数删除addons数组中的第一项,可以看到成功删除之后数组长度变短,同时查看删除后数据的第一个元素,和和图3不一样,因为他们的syncGUID是不一样的。
Linux命令都是可以通过管道符|进行输入和输出的,如下:
图8
上述的图中都是通过jq直接读入文件,也可以通过cat命令传递给jq命令实现文件的读取,然后再输出给tail命令读取最后十行的内容
除了命令行的方式,jq还提供图形界面的方式,像很多的在线网站一样,如下:
图9
UI界面针对少量的数据比较直观,针对大量的数据,没有命令行方便快捷。同时过个命令通过管道符进行配合可以实现的能力更为强大。
除了上述的功能之外,jq还支持更多的内置函数,正则匹配,变量定义,函数定义,条件判断即类似编程的条件判断语句,更为高级的特性请参考这里。
本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。