【转帖】Linux命令行操作json神器jq
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 install之类的,很简单
二、常用操作
1.格式化json
直接请求,格式明显不易读
➜ ~ curl -s http://t.weather.sojson.com/api/weather/city/101310215
{"message":"success感谢又拍云(upyun.com)提供CDN赞助","status":200,"date":"20191025","time":"2019-10-25 11:17:41","cityInfo":{"city":"万宁市","citykey":"101310215","parent":"海南","updateTime":"09:59"},"data":{"shidu":"92%","pm25":20.0,"pm10":49.0,"quality":"优","wendu":"25","ganmao":"各类人群可自由活动","forecast":[{"date":"25","high":"高温 29℃","low":"低温 23℃","ymd":"2019-10-25","week":"星期五","sunrise":"06:35","sunset":"18:10","aqi":44,"fx":"无持续风向","fl":"<3级","type":"中雨","notice":"记得随身携带雨伞哦"},{"date":"26","high":"高温 29℃","low":"低温 23℃","ymd":"2019-10-26","week":"星期六","sunrise":"06:35","sunset":"18:09","aqi":31,"fx":"无持续风向","fl":"<3级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"27","high":"高温 29℃","low":"低温 23℃","ymd":"2019-10-27","week":"星期日","sunrise":"06:36","sunset":"18:09","aqi":28,"fx":"无持续风向","fl":"<3级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"28","high":"高温 30℃","low":"低温 22℃","ymd":"2019-10-28","week":"星期一","sunrise":"06:36","sunset":"18:08","aqi":34,"fx":"东北风","fl":"3-4级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"29","high":"高温 27℃","low":"低温 22℃","ymd":"2019-10-29","week":"星期二","sunrise":"06:36","sunset":"18:07","aqi":35,"fx":"东北风","fl":"3-4级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"30","high":"高温 27℃","low":"低温 22℃","ymd":"2019-10-30","week":"星期三","sunrise":"06:37","sunset":"18:07","aqi":32,"fx":"无持续风向","fl":"<3级","type":"中雨","notice":"记得随身携带雨伞哦"},{"date":"31","high":"高温 29℃","low":"低温 22℃","ymd":"2019-10-31","week":"星期四","sunrise":"06:37","sunset":"18:06","fx":"东北风","fl":"3-4级","type":"中雨","notice":"记得随身携带雨伞哦"},{"date":"01","high":"高温 25℃","low":"低温 24℃","ymd":"2019-11-01","week":"星期五","sunrise":"06:38","sunset":"18:06","fx":"东北风","fl":"3-4级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"02","high":"高温 25℃","low":"低温 24℃","ymd":"2019-11-02","week":"星期六","sunrise":"06:38","sunset":"18:05","fx":"东北风","fl":"4-5级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"03","high":"高温 26℃","low":"低温 24℃","ymd":"2019-11-03","week":"星期日","sunrise":"06:38","sunset":"18:05","fx":"东风","fl":"3-4级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"04","high":"高温 25℃","low":"低温 24℃","ymd":"2019-11-04","week":"星期一","sunrise":"06:39","sunset":"18:04","fx":"东北风","fl":"<3级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"05","high":"高温 28℃","low":"低温 24℃","ymd":"2019-11-05","week":"星期二","sunrise":"06:39","sunset":"18:04","fx":"东南风","fl":"<3级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"06","high":"高温 25℃","low":"低温 21℃","ymd":"2019-11-06","week":"星期三","sunrise":"06:40","sunset":"18:04","fx":"东北风","fl":"3-4级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"07","high":"高温 23℃","low":"低温 22℃","ymd":"2019-11-07","week":"星期四","sunrise":"06:40","sunset":"18:03","fx":"东北风","fl":"3-4级","type":"小雨","notice":"雨虽小,注意保暖别感冒"},{"date":"08","high":"高温 25℃","low":"低温 22℃","ymd":"2019-11-08","week":"星期五","sunrise":"06:41","sunset":"18:03","fx":"北风","fl":"3-4级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"}],"yesterday":{"date":"24","high":"高温 29℃","low":"低温 23℃","ymd":"2019-10-24","week":"星期四","sunrise":"06:34","sunset":"18:10","aqi":27,"fx":"无持续风向","fl":"<3级","type":"多云","notice":"阴晴之间,谨防紫外线侵扰"}}}
使用jq格式化,如下
curl -s http://t.weather.sojson.com/api/weather/city/101310215 | jq
{
"message": "success感谢又拍云(upyun.com)提供CDN赞助",
"status": 200,
"date": "20191025",
"time": "2019-10-25 10:27:28",
"cityInfo": {
"city": "万宁市",
"citykey": "101310215",
"parent": "海南",
"updateTime": "09:59"
},
"data": {
"shidu": "92%",
"pm25": 20,
"pm10": 49,
"quality": "优",
"wendu": "25",
"ganmao": "各类人群可自由活动",
"forecast": [
{
"date": "25",
"high": "高温 29℃",
"low": "低温 23℃",
"ymd": "2019-10-25",
"week": "星期五",
"sunrise": "06:35",
"sunset": "18:10",
"aqi": 44,
"fx": "无持续风向",
"fl": "<3级",
"type": "中雨",
"notice": "记得随身携带雨伞哦"
},...
已经格式化过
2.取指定字段的值
直接输入字段,使用.嵌套访问,例如要获取昨天的信息
curl -s http://t.weather.sojson.com/api/weather/city/101310215 | jq .data.yesterday
{
"date": "24",
"high": "高温 29℃",
"low": "低温 23℃",
"ymd": "2019-10-24",
"week": "星期四",
"sunrise": "06:34",
"sunset": "18:10",
"aqi": 27,
"fx": "无持续风向",
"fl": "<3级",
"type": "多云",
"notice": "阴晴之间,谨防紫外线侵扰"
}
3.过滤指定字段
使用一个json指定所有字段,如{date, high},获取昨天的最高温度如下
curl -s http://t.weather.sojson.com/api/weather/city/101310215 | jq .data.yesterday|jq "{date,high}"
{
"date": "24",
"high": "高温 29℃"
}
4.获取多个字段的值
使用逗号获取多个
curl -s http://t.weather.sojson.com/api/weather/city/101310215 | jq .data.yesterday|jq ".date, .high"
"24"
"高温 29℃"
5.筛选数组
直接指定数组的索引即可
curl -s http://t.weather.sojson.com/api/weather/city/101310215 |jq ".data.forecast"|jq ".[0,9]"
{
"date": "25",
"high": "高温 29℃",
"low": "低温 23℃",
"ymd": "2019-10-25",
"week": "星期五",
"sunrise": "06:35",
"sunset": "18:10",
"aqi": 44,
"fx": "无持续风向",
"fl": "<3级",
"type": "中雨",
"notice": "记得随身携带雨伞哦"
}
{
"date": "03",
"high": "高温 26℃",
"low": "低温 24℃",
"ymd": "2019-11-03",
"week": "星期日",
"sunrise": "06:38",
"sunset": "18:05",
"fx": "东风",
"fl": "3-4级",
"type": "小雨",
"notice": "雨虽小,注意保暖别感冒"
}
更多操作请参考官方文档:https://stedolan.github.io/jq/manual/
【转帖】Linux命令行操作json神器jq的更多相关文章
- LINUX命令行操作
Linux 命令行快捷键 7条回复 涉及在linux命令行下进行快速移动光标.命令编辑.编辑后执行历史命令.Bang(!)命令.控制命令等.让basher更有效率. 说明 Ctrl – k: 先按住 ...
- 如何查看linux命令行操作的历史记录-linux
前言 由于刚开始学习linux,对命令行不熟悉,可以查看使用过的命令行历史记录,熟悉命令行并熟练操作,对命令行进行深入地理解. 系统环境 OS:ubuntu16.04. 操作过程 在主文件夹目录即ho ...
- linux命令行操作快捷键
在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键. 在命令终端中通过它们或者方向键可以实现对历史命令的快速查找.这也是快速输入命令的技巧. 在命令终端中可 ...
- Linux命令行操作进程
参见 12个进程管理命令介绍 Linux如何查看进程.杀死进程.启动进程等常用命令
- linux命令行操作基本知识
乱七八糟的命令 . 表示当前目录 .. 表示上一级目录 ls 显示文件 -l 列表 -a 隐藏文件 -h 文件大小人性化显示 gedit 自带文本编辑器 subl 打开sublime > 重定向 ...
- linux命令行操作mysql数据库明细
连接数据库==> mysql -uroot -p 输入root密码 进入mysql操作后 下面的命令不要忘了最后结尾的; 1.选择数据库命令: use <数据库名> 2.查看表的引擎 ...
- mysql linux 命令行操作
1. 登录mysql mysql -u 用户名 -p 回车输入密码
- ★Linux命令行操作技巧(作为服务器端)
1.统计某个目录下总共有多少个文件(递归统计所有子目录)ls -lR|grep "^-"|wc -l
- memcache 命令行操作
今天找了很久,如何在服务器直接查看memcache 的值, 来确定php中memcache是否已经写进去了 https://www.ttlsa.com/memcache/memcache-list-a ...
随机推荐
- [Javascript] Private Variables with IIFEs
An IIFE (immediately invoked function expression) is when a function is called immediately after it ...
- (尚033)Vue_案例_slot(组件间的通信4:slot)
1.组件间的通信4:slot(slot:插槽,就是一个占位) slot用于标签反复使用很多次 1.1理解 此方式用于父组件向子组件传递标签数据, 其他为数据通信 外面组件向里面组件传递标签进去,直接拿 ...
- 文件描述符fd,struct files_struct
程序可以理解为硬盘上的普通二进制文件:进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件描述信息的结构体,描述该进程的结构体叫PCB(进程控制块),在这就不在讨 ...
- smashing 三方widgets 使用
smashing 有一套自己的约定,包括widgets 以及dashboard,还有就是关于数据的处理 约定如下 三方widgets 统一在widgets 目录下,一般包含了基于coffee 的js ...
- 2.学习SpringMVC注解入门篇
一.SpringMVC执行流程 . 二.创建项目学习SpringMVC注解 按照我之前的SpringMVC创建项目,首先创建一个项目springmvc01,配置好pom.xml,web.xml,spr ...
- 下拉选择的blur和click事件冲突了
当写个下拉选择框时我们希望当input失去焦点时,下拉框消失,或者当选择下拉框中的内容的同时将内容填入input并且使下拉框消失. 这时候我们会想到blur和click,单独使用的时候是没有问题的,但 ...
- 【Spring Boot】内嵌容器
Spring Boot内嵌容器支持Tomcat.Jetty.Undertow. tomcat容器 spring boot 的web应用开发必须使用spring-boot-starter-web,其默认 ...
- Kubernetes中如何让Deployment更新镜像
问题描述 我的deployment有单个pod,我的自定义docker镜像如下: 123 containers: - name: mycontainer image: myimage:latest 在 ...
- plsql tables 表存在,但是看不到所有的表信息
1.情景展示 tables目录存在,但是看不到该数据库下的表信息. 2.解决方案 对比同事的发现,原来是选错用户了. 将用户切换为当前用户就行了,不知道什么时候搞成所有用户了. 写在最后 哪位大佬 ...
- portaudio使用笔记《转》
原文链接:https://blog.csdn.net/gg_simida/article/details/77185755 介绍 PortAudio是一个免费.跨平台.开源的音频I/O库.看到I/O可 ...