Linux Shell環境下用jq命令處理json檔案
阿新 • • 發佈:2018-12-07
-
安裝
CentOS下可以直接通過yum安裝:yum install jq -y
-
使用方法
假設有一個名為test.json的檔案,內容如下:{ "Summary": { "Version": "1.0", "Comment": [ "List1", "List2" ] } }
使用jq命令可以用描述性的語言來獲取json檔案中的元素:
[[email protected] ~]# jq .Summary test.json { "Version"
jq命令還提供一些內建函式,比如利用keys獲取json檔案中的所有key,has判斷是否存在某個key:
[[email protected] ~]# jq 'keys' test.json [ "Summary"
在指令碼中使用jq命令
指令碼中往往有這樣的需求:取出json檔案中的某一個元素,儲存到變數中做下一步處理。但是注意到,通過jq命令取出的字元型元素是帶引號的,例如:[[email protected] ~]# jq .Summary.Version test.json "1.0"
但是我們往往不需要這個引號,這時可以使用Shell提供的字串替換功能
-
使用
-r
引數[[email protected] dbconf]# jq -r 'keys' test.json Summary
-
編寫指令碼example.sh進行示例:
#!/bin/bash Var1=$(jq .Summary.Version test.json) echo "Var1: $Var1" Var2=${Var1//\"/} echo "Var2: $Var2"
執行該指令碼可以看到,Var2被去除了引號
[[email protected] ~]# ./example.sh Var1: "1.0" Var2: 1.0
其實這是用了字串的替換語法:
# //代表全部替換 ${Str//"被替換的內容"/"替換的內容"}
在上述指令碼中,我們想刪除掉",那麼可以理解成將"替換成空,因此就可以用指令碼中所示的語法來處理了:
Var2=${Var1//\"/}
-