分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

Linux 命令详解(十一)Shell 解析 json命令jq详解

发布时间:2023-09-06 01:18责任编辑:苏小强关键词:jsjsonLinux

前言

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

更多jq信息: http://stedolan.github.io/jq/manual/

一、根据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 参数表示:静默模式。不输出任何东西,更多了解【curl命令】

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

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:~$

Linux 命令详解(十一)Shell 解析 json命令jq详解

原文地址:http://www.cnblogs.com/tinywan/p/7684414.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved