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


前言

在自動化部署中涉及到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 Speed 100   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")'
true www@TinywanAliYun:~$ curl 'https://www.tinywan.com/frontend/websocket_client/autoInstallConf' | jq 'has("sign2")'
false www@TinywanAliYun:~$

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM