博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 命令详解(十一)Shell 解析 json命令jq详解
阅读量:6824 次
发布时间:2019-06-26

本文共 1900 字,大约阅读时间需要 6 分钟。

前言

在自动化部署中涉及到shell脚本需要动态读取很多配置文件,最好是json格式。

更多jq信息: 

一、根据key获取value

语法:jq '.key'

1、单个值获取

www@TinywanAliYun:~$ cat d25341478381063d1c76e81b3a52e0592a7c997f.json | jq '.sign'"d25341478381063d1c76e81b3a52e0592a7c997f"

2、JSON nested parse(嵌套解析)

www@TinywanAliYun:~$ cat d25341478381063d1c76e81b3a52e0592a7c997f.json | jq '.live_node_config.node1.ip'"192.168.10.10"

注意:json 数组的键命名必须为下划线"_",不能为"-",否则解析不了。如:

错误的命名

"live-node-proxy-config": {    "ip": "192.168.10.100",    "user": "www",    "pwd": "www123456"  },

正确

"live_node_proxy_config": {    "ip": "192.168.10.100",    "user": "www",    "pwd": "www123456"  },

小菜刀!!!在这里我们可以使用curl可以获取完全一样的结果

www@TinywanAliYun:~$ curl -s 'https://www.tinywan.com/frontend/websocket_client/autoInstallConf' | jq '.live_node_config.node1.ip'"192.168.10.10"

curl 的 -s 参数表示:静默模式。不输出任何东西,更多了解】

在这里如果不加该参数则会输出文件下载进度,如下所示:

www@TinywanAliYun:~$ curl 'https://www.tinywan.com/frontend/websocket_client/autoInstallConf' | jq '.live_node_config.node1.ip'  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100   636    0   636    0     0   2053      0 --:--:-- --:--:-- --:--:--  2058"192.168.10.10"

3、解析不存在的元素,会返回null

www@TinywanAliYun:~$ cat d25341478381063d1c76e81b3a52e0592a7c997f.json | jq '.live_node_config.node1.ip123'null

 

二、jq的内建函数,如:keys,has

1、keys是用来获取JSON中的key元素的,查找json中所有的键

www@TinywanAliYun:$ curl 'https://www.tinywan.com/frontend/websocket_client/autoInstallConf' | jq 'keys'[  "live-node-config",  "live-node-proxy-config",  "osscmd-config",  "push-config",  "redis-config",  "sign"]

2、has是用来是判断是否存在某个key

www@TinywanAliYun:~$ curl 'https://www.tinywan.com/frontend/websocket_client/autoInstallConf' | jq 'has("sign")'truewww@TinywanAliYun:~$ curl 'https://www.tinywan.com/frontend/websocket_client/autoInstallConf' | jq 'has("sign2")'falsewww@TinywanAliYun:~$

 

转载地址:http://jpgzl.baihongyu.com/

你可能感兴趣的文章
Golang源码探索(二) 协程的实现原理
查看>>
课程目标
查看>>
记一次使用Ubuntu 14.04 LTS搭建FBctf平台
查看>>
领英准备好成为下一个媒体巨人了吗?
查看>>
head first python(第二章)–学习笔记
查看>>
grunt和前端模块管理工具的简单使用
查看>>
linux - command - iftop 磁盘IO查看神器
查看>>
腾讯MSDK支付接入记录
查看>>
Binary Tree Maximum Path Sum@LeetCode
查看>>
修改了一个HTML2Markdown 函数
查看>>
JXLS 2.4.0学习
查看>>
Android--listView长按修改ListView对象内容
查看>>
gradle_学习_02_gradle多模块构建实例
查看>>
Linux小技巧总结
查看>>
乾卦第一 坤卦第二
查看>>
【译Py】2018年,这5个数据科学项目能帮你找到工作
查看>>
Html2excel 1.4.1 发布,Html 转 Excel 工具包
查看>>
Linux安装配置反向代理Nginx
查看>>
Spring事务的传播属性和事务隔离级别
查看>>
关于maven
查看>>