使用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 作为关键字来对 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数据

时间: 2024-07-30 10:17:02

使用jq工具在Shell命令行处理JSON数据的相关文章

使用浏览器的开发者工具与 DIG 命令行工具,来分析访问站点时的网络连接与 HTTP 请求和响应

前言 想必有些朋友和我一样,想要弄清楚当使用浏览器访问一个站点时,究竟向那些站点发起了 HTTP 请求:站点的 HTTP 响应:这些站点的域名是否和 shell 终端输出的 socket 套接字IP地址对应得上:这些站点使用的域名,IP地址,物理地址,域名拥有者和IP地址拥有者之间的联系:系统当前是否存在恶意或非法的网络连接...等等. 本博文就是要以随手取得的开源工具,并且用一种可实际操作的标准化流程,来达到上述种种分析任务的目标. 这套工具集与流程,以及思路,适用于你想分析的任何对象(这里指

Shell 命令行快捷键

在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键. 在命令终端中通过它们或者方向键可以实现对历史命令的快速查找.这也是快速输入命令的技巧. 在命令终端中可以通过Ctrl+r 实现快速检索使用过的历史命令.Ctrl+r中r是retrieve中r. Ctrl+a:光标回到命令行首. (a:ahead) Ctrl+e:光标回到命令行尾. (e:end) Ctrl+b:光标向行首移动一个字符. (b:backwards) Ctrl+ f:光标向行尾移动一个字

〖Linux〗上传单个文件到FTP的Shell命令行(函数)

1 #!/bin/bash - 2 #=============================================================================== 3 # 4 # FILE: ftp_put_file.sh 5 # 6 # USAGE: ./ftp_put_file.sh 7 # 8 # DESCRIPTION: 9 # 10 # OPTIONS: --- 11 # REQUIREMENTS: --- 12 # BUGS: --- 13 # NO

几种在shell命令行中过滤adb logcat输出的方法

我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb logcat输出的方法. 1.只显示需要的输出(白名单) 最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配.简单的匹配一行当中的某个字符串,例如 MyApp: adb logcat | grep MyApp       adb logcat | grep -i

* 和 ?在 shell 命令行中与在正则表达式中的区别

Linux 正则表达式 你有没有想过,在 shell 命令行中的 *,?和正则表达式中的*,?是否一样? 自打好多年前接触 DOS,就知道了* 和?这两个通配符(Wildcard),象 dir *.* 这样的命令也不知道敲了多少遍. 后来,开始用 Windows 3.1 这样的图形界面操作系统,命令行就就得越来越少了. 再后来,开始学习正则表达式,又开始接触 * 和 ? 这样的东西.在正则中它们被称为元字符(Meta Character). 再再后来,开始使用 Linux,于是又开始使用命令行,

SylixOS下Shell命令行执行模块内函数

1. 适用范围 本文档介绍了在Shell命令行执行内核模块内函数实现原理.   在VxWorks中,系统自带有在Shell命令行直接执行驱动.应用内函数的功能,此功能完善了驱动开发工程师.应用开发工程师的开发.调试的手段.为了让这类工程师能快速适应SylixOS,据此开发了类似的功能模块,目前第一版支持在Shell命令行执行内核模块内的函数. 2. SylixOS内核模块动态加载原理 2.1 SylixOS中的ELF文件 SylixOS中的ELF文件主要有三种: - obj文件: 一个源文件编译

自学Linux Shell2.1-进入shell命令行

点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多种目前流行的文件系统,如EXT2. EXT3. FAT. FAT32. VFAT和ISO9660. 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9172448.html

【转帖】Linux命令行操作json神器jq

https://www.cnblogs.com/chenqionghe/p/11736942.html jq类似一个awk或grep一样的神器,可以方便地在命令行操作json 这里我使用海南万宁的天气接口做演示,地址:http://t.weather.sojson.com/api/weather/city/101310215 一.安装 官网:https://stedolan.github.io/jq/download/基本就是brew install.apt install.yum instal

windows下shell命令行的常用操作命令

windows下shell命令行的常用操作命令 Command Shell是Windows内置的第一个使用批处理(.bat)文件自动执行日常任务,可以在Command Shell中运行更复杂的脚本 进入d盘直接输入 d: 切换目录 cd 显示目录 dir 进入某个文件夹并打开windows窗口 start ./filepath 远程连接ssh 与linux下一样,直接输入用户名@ip,输入密码即可 显示ip ipconfig Net user 功能:查看本机账户情况 net user xxx 1