使用jq工具在Shell命令行处理JSON数据
由于近期要处理一些 JSON 数据格式。一大早经过一番搜索后,终于找到了 jq 这个非常棒的工具。jq 同意你直接在命令行下对 JSON 进行操作,包含分片、过滤、转换等等。
首先在mac下安装jq。使用brew install jq就能够了,前提是安装了homebrew。假设在linux ubuntu下。应该能够使用sudo apt-get install jq安装。
让我们通过几个样例来说明 jq 的功能:
一、输出格式化,美丽的打印效果
假设我们用文本编辑器打开 JSON,有时候可能看起来会一团糟,可是通过 jq 的 .(点)过滤器就能够立刻让 JSON 的格式规整起来。
1.用文本编辑器打开后的样子
2.用 jq 显示的结果,以后在终端下看json舒服了!
$ jq . package.json
{
"scripts": {
"test": "grunt test"
},
"engines": {
"node": ">=0.10.0"
},
"devDependencies": {
"karma-ng-html2js-preprocessor": "^0.1.0",
"karma": "^0.12.19",
"grunt-karma": "^0.8.3",
"karma-ng-scenario": "^0.1.0",
"time-grunt": "~0.2.1",
"load-grunt-tasks": "~0.4.0",
"jshint-stylish": "~0.1.3",
"grunt-usemin": "~2.0.0",
"grunt-svgmin": "~0.2.0",
"grunt-rev": "~0.1.0",
"grunt-ngmin": "~0.0.2",
"grunt-newer": "~0.6.1",
"grunt-contrib-connect": "~0.5.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-compass": "~0.7.2",
"grunt-contrib-clean": "~0.5.0",
"grunt-concurrent": "~0.5.0",
"grunt-bower-install": "~1.0.0",
"grunt-autoprefixer": "~0.4.0",
"grunt": "~0.4.1",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-cssmin": "~0.7.0",
"grunt-contrib-htmlmin": "~0.1.3",
"grunt-contrib-imagemin": "~0.3.0",
"grunt-contrib-jshint": "~0.7.1",
"grunt-contrib-uglify": "~0.2.0",
"grunt-contrib-watch": "~0.5.2",
"grunt-google-cdn": "~0.2.0"
},
"dependencies": {},
"version": "0.0.0",
"name": "myyo"
}
二、高速查询JSON数据
利用 jq 可以以 key 作为keyword来对 JSON 作出高速查询, 比如:
$ jq .version package.json
"0.0.0"
jq 的键查询也支持链式调用,如:
$ jq .scripts.test package.json
"grunt test"
三、jq的管道操作
熟悉命令行的朋友可能都知道 | (管道)是一个很强大的 武器。幸运的是,jq 也提供了对管道的支持。
$ jq '.devDependencies|{ karma }' package.json
{
"karma": "^0.12.19"
}
在这里,我们使用管道过滤并构造出karma对象
四、总结
假设你须要在命令行下处理 JSON,我强烈推荐 jq。jq 不仅 可以满足一般性的常见需求,更包括运算、内置函数、条件比較、 变量声明、自定函数等强大功能。很多其它内容可以通过 jq 的官方手冊进行学习。
使用jq工具在Shell命令行处理JSON数据的更多相关文章
- 【AMAD】watchdog -- 用于监控文件系统的事件,并且提供了shell命令行工具
简介 动机 作用 用法 个人评分 简介 用于监控文件系统的事件的Python库,并且提供了shell命令行工具 动机 有很多情况下,我们希望监控文件的变化,在变化之后作出一些响应. 比如flask,d ...
- Shell 命令行求两个文件每行对比的相同内容
Shell 命令行求两个文件每行对比的相同内容 遇到的一个实际问题是,2017年08月01日起,所有未经实名的域名,全部停止解析.而我手上有不少域名,其中很多都是没有实名的.但我不知道哪些实名了,哪些 ...
- 几种在shell命令行中过滤adb logcat输出的方法
我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adblog ...
- 自学Linux Shell2.1-进入shell命令行
点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 进入文本命令行界面(CLI)两种方法: 控制台终端 图形化终端 1. 通过Linux控制台终端访问CLI 按下Ctrl ...
- Hadoop HDFS的shell(命令行客户端)操作实例
HDFS的shell(命令行客户端)操作实例 3.2 常用命令参数介绍 -help 功能:输出这个命令参数手册 -ls 功能:显示目录信息 示例: hadoop fs ...
- Cordova - Windows版本图形界面管理工具,告别命令行输入方式!
Cordova本身提供的是命令行管理工具,并没有提供图形界面管理工具,虽然命令行管理工具可以完成所有Cordova管理,但是对于我这种懒蛋,可真不希望每次都输入命令,而且我更担心一旦输错一个字符,命令 ...
- Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本
Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文 ...
- HDFS shell命令行常见操作
hadoop学习及实践笔记—— HDFS shell命令行常见操作 附:HDFS shell guide文档地址 http://hadoop.apache.org/docs/r2.5.2/hadoop ...
- Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本
Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本 不知道为什么,我总想用 Shell 脚本来实现把一个站点内容给下载下来.但是下载什么站点我确不知道.今天尝试了一下利用 curl ...
随机推荐
- Java:对象的序列化
一.对象序列化机制 序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以被保存在磁盘上或通过网络传输,以备以后重新恢复原来的对象: 序列化机制使得对象可以脱离程序的运行而独立存在: ...
- ecshop标签
页面标题 {$page_title}页面关键字 {$keywords} 产品分类 父分类列表 {foreach from=$cate ...
- Use_Case
What is Use-Case 2.0?Use Case: A use case is all the ways of using a system to achieve a particular ...
- C# Json反序列化处理
最近换工作了 从客户端转到Web端 第一个任务就是去别人的页面上抓取数据 用到的是JSON 因为他们网站json的格式有点怪 所以 就在JSON反序列化上面 花了一点时间 首先用到的工具是http:/ ...
- (转)Eclipse 下找不到或无法加载主类的解决办法
转自:http://my.oschina.net/leejun2005/blog/106789,写的太好了! 有时候 Eclipse 会发神经,好端端的 project 就这么编译不了了,连 Hell ...
- JS模块加载器加载原理是怎么样的?
路人一: 原理一:id即路径 原则.通常我们的入口是这样的: require( [ 'a', 'b' ], callback ) .这里的 'a'.'b' 都是 ModuleId.通过 id 和路径的 ...
- EasyPHP的Apache报错
今天安装了最新版本的软件:EasyPHP-DevServer-14.1VC11-install.exe 启动报错: 打开Cport软件: 可见80端口被系统占用,导致Apache不能启动. (1)手动 ...
- 去除UINavigationBar默认透明度的方法
UINavigationbar的属性translucent,用来控制导航条的透明度的: iOS7+版本后,navigationbar的translucent属性默认为YES,及默认带有透明度 [sel ...
- Party
hdu3062:http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文题. 题解:很明显的2-sat.然后要深刻理解命题和逆否命题.如这一题,c1,c ...
- h.264 去块滤波
块效应及其产生原因 我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact). 首先我们需要 ...