什么是jq?jq是Linux下面把文本字符串格式化成json格式的工具
系統環境:centos 7
一、安裝
(1)yum安裝
a、安裝epel源
# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum repolist ###檢查是否已經添加到源列表
b、yum install -y jq
(2)源碼安裝
a、下載源碼包
# wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
# tar zxvf jq-1.5.tar.gz
# cd jq-1.5
# ./configure
# make && make install
編譯安裝完成以后就能在該目錄下看見jq二進制文件了,添加到環境變量~/.bashrc
如圖:
# source ~/.bashrc
安裝完成,現在就可以使用jq命令
二、jq測試
(1)簡單測試
# echo '{"yjt":"boy","age":20}' |jq . #注意,命令最后有一個點,代表顯示全部的json文件
效果:
注意:jq命令會檢查json格式的合法性,如果不合法,將保錯,具體的json格式,請瀏覽:http://www.w3school.com.cn/json/json_syntax.asp 或者 https://stedolan.github.io/jq/manual/
(2)通過key獲取值,如何獲取呢?
jq '.key'
file文件內容
{ "System_Time":"2018-11-27 17:42:02", "Hostname":"test.com", "Network":[ { "Network_Card": "bond1", "ip":"10.126.140.16", "Input_Traffic": "4.448K/S", "Output_Traffic": "2.649K/S " },{ "Network_Card": "eth4", "ip":null, "Input_Traffic": "2.679K/S", "Output_Traffic": "1.805K/S " },{ "Network_Card": "eth6", "ip":null, "Input_Traffic": "0.750K/S", "Output_Traffic": "0.000K/S " }], "CPU":{ "us":"0%", "sy":"0%", "id":"100%", "wa":"0%", "cpu_rate":"0.01%", "CPU_Load_Average": " 0.15, 0.04, 0.01", "Running_Process":"1", "Total_Process":"696", "Host_Running_Time":" 18 days 22:53", "User_Connection_Number":"2" , "CPU_Status":"Normal" }, "Memory":{ "total_mem":"128644M", "use_mem": "1373M", "free_mem": "127270M", "use_rate": "1%", "free_swap": "65535M", "total_swap": "65535M", "use_swap": "0M", "swap_use_rate": "0%", "Memory_Status":"Normal", "Swap_Memory_Status":"Normal" }, "disk":{ "root_use":"1%", "root_status":"Normal", "var_use":"1%", "vae_status":"Normal", "data_use":"1%", "data_status":"Normal", "data1_use":"0%", "data1_status":"Normal", "data2_use":"1%", "data2_status":"Normal", "data3_use":"1%", "data3_status":"Normal" }, "TCP":{ "TIME_WAIT":"36", "FIN_WAIT1":"0", "FIN_WAIT2":"0", "CLOSE_WAIT":"0", "ESTABLISHED":"2", "SYN_RECV":"0", "LAST_ACKV":"0", "CLOSING":"0" }, "type":"END" }
例:
(3)獲取不存在的key會返回null
(4)嵌套解析
(5)內建函數
a、has 用來判斷是否存在某個key
b、key 用來獲取json中的key元素的
例: