程序员必备命令之-Json数据处理命令jq
遇到json格式的数据你会怎么办,是自己编写程序处理,还是去搜索在线的json格式处理网站。这些方式都不是很方便,或者说功能不够强大,本文将介绍强大的jq命令来帮助程序员灵活处理各种json数据。
jq简介
jq是一个Json格式数据处理命令,能够对json数据格式进行增删改查,jq的主要功能如下:
- 格式化输出: jq支持将JSON数据格式化为人类可读的形式,支持高亮等操作提高可读性。
- 查询和过滤: jq支持丰富的查询语法来过滤和提取JSON数据中的特定部分,从而简化数据处理过程。
- 修改和更新: jq不仅可以查询数据,还支持特定的语法来修改JSON结构,实现数据更新的目的。
- 结合管道: jq支持与其他命令和工具结合使用,例如curl、grep等,实现更复杂的数据处理流程。
- 变量和函数: jq支持变量和函数的使用,使得用户能够编写更灵活和复杂的jq脚本。
在大多数Linux系统中,jq可以通过包管理器直接安装,例如centos使用如下命令安装:
sudo yum install jq
如果想要使用最新的jq,可以到github上去下载,自行编译安装,见这里。
json格式简介
在介绍jq命令的使用方法之前,有必要简单介绍一下json的数据格式。json格式的文件主要包含对象和数据,如下:
- 对象: JSON对象是由一组键值对构成的无序集合,用花括号{}表示。对象的元素可以是字符串、数字、布尔值和null、对象、数组等。
- 数组:JSON数组是有序的值列表,用方括号[]表示。数组的元素可以是字符串、数字、对象、布尔值和null、数组,对象等。
因此使用jq命令也是主要围绕着对象和数组进行处理的。
jq使用举例
本文以firefox流量器的extensions.json文件的内容为例进行介绍,extensions.json文件存储了firefox安装的插件信息。如下图为jq的help信息,将介绍其中主要的命令参数的用法。
图1
格式化输出举例
多数的时候针对json格式的文件,第一步就是要读懂json 格式的文件,如下:
图2
图2可以看到使用jq . 命令就会按照键值对的形式每行进行显示,我的shell还默认针对键值对进行了着色,比之cat,more等命令来说,更加容易理解json的格式。但是有一个缺点就是该文件的行数太多,如何快速的了解该Json文件的大致内容呢,见如下的查询部分。
查询和过滤举例
该文件比较大,有哪些键值对呢,如下:
图3
图4
- 由于文件比较大,图3先试用keys过滤器过滤出该json文件有哪些键值,其中addons由图2可知是一个数据。
- 因此使用.addons|length过滤器查询该数组的长度,需要注意的是其中的竖符号不是利用的shell的管道,而是jq内置的管道,所以该过滤器需要使用引号进行闭合,用来哦和shell管道符进行区分。
- 知道了长度之后,可以该json文件主要由该数组中的每一个元素组成。由于屏幕无法显示完全,因此针对数组来说查看第一个数组的内容。
- 图4则是查看数组中第一个对象包含哪些键值,同时查看addons数组中每一对象的id键值对应的值是什么,即firefox安装哪些扩展 。
通过图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村中少年原创文章,未经允许不得转载,博主链接这里。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!