2014-03-13 78 views
-1

我有這樣的事情在我的shell腳本:JQ - 解析數據

"{ \"ratio\": 32.56351, \"name\": \"Classes\" } { \"ratio\": 9.505888, \"name\": \"Conditionals\" } { \"ratio\": 36.30363, \"name\": \"Files\" } { \"ratio\": 13.349417, \"name\": \"Lines\" } { \"ratio\": 19.908062, \"name\": \"Methods\" } { \"ratio\": 43.75, \"name\": \"Packages\" }" 

我需要提取像這樣出來的:

Classes : 32.56351 
Conditionals : 9.505888 

等所有其他值並將其存儲在一些數組或變量中。我在考慮使用jq json解析器:http://stedolan.github.io/jq/

回答

2

我認爲你的json是無效的。我刪除邊緣雙引號和轉義他們的休息,如:

{ "ratio": 32.56351, "name": "Classes" } { "ratio": 9.505888, "name": "Conditionals" } { "ratio": 36.30363, "name": "File" } { "ratio": 13.349417, "name": "Lines" } { "ratio": 19.908062, "name": "Methods" } { "ratio": 43.75, "name": "Packages" } 

有了它,你可以用串插嘗試,如:

jq -r '"\(.name): \(.ratio)"' infile 

國債收益率:

Classes: 32.56351 
Conditionals: 9.505888 
File: 36.30363 
Lines: 13.349417 
Methods: 19.908062 
Packages: 43.75