linux 命令之jq
jq命令允許直接在命令行下對JSON進行操作,包括分片、過濾、轉換等
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集
JSON 數據的書寫格式是: 名稱/對象。
JSON的結構基于兩點
“名稱/值”的集合 ,在不同的語言中,它可以被理解為對象(object),記錄(record),結構(struct),字典(dictionary),哈希表(hash table),鍵列表(keyed list)等 .
值的有序列表 多數語言中被理解為數組(array)
JSON的基礎結構說明
對象是屬性、值的集合。一個對象開始與”{” ,結束于”}”。每一個屬性名和值間用”:”分隔。每個屬性間用”,”分隔。
值可以是字符串,數字,邏輯值,數組,對象,null。
數字:整數或浮點數
字符串:在雙引號中
邏輯符:true和false
數組:在方括號中
對象:在花括號中
null: 代表空
Ubuntu下的jq安裝
apt-get install jq
1
jq命令的格式
jq [options] filter [files]
**options:**
--version:輸出jq的版本信息并退出
--slurp/-s:讀入整個輸入流到一個數組。
--raw-input/-R:不作為JSON解析,將每一行的文本作為字符串輸出到屏幕。
--null-input/ -n:不讀取任何輸入,過濾器運行使用null作為輸入。一般用作從頭構建JSON數據。
--compact-output /-c:使輸出緊湊,而不是把每一個JSON對象輸出在一行。
--colour-output / -C:打開顏色顯示
--monochrome-output / -M:關閉顏色顯示
--ascii-output /-a:指定輸出格式為ASCII
-raw-output /-r :如果過濾的結果是一個字符串,那么直接寫到標準輸出(去掉字符串的引號)
**filter:**
. ? : 默認輸出
.foo: 輸出指定屬性,foo代表屬性。
.[foo] :輸出指定數組元素。foo代表數組下標。
.[]:輸出指定數組中全部元素
, :指定多個屬性作為過濾條件時,用逗號分隔
| : 將指定的數組元素中的某個屬性作為過濾條件
**files:**
? ? JOSN格式文件。
用作示例的JOSN文件。
[{"hostCompany":"Beijing Autelan Technology","hostModel":"CS-VIC-2000-C","hostsn":"01010730b12014A00477","mac":"00:1F:64:CE:F3:8E","cpuModel":"MIPS 74Kc V4.12","cpuSN":"000000","memoryModel":"abcdefg","memorySN":"000000","boardSN":"01010730b12014A00477","networkCardMac":"00:1F:64:CE:F3:8F","lowFreModel":"AR9344","lowFreSN":"000000","hignFreModel":"AR9582","hignFreSN":"000000","gpsModel":"abcdefg","gpsSN":"000000","MEID_3g":"A000004E123ABD2","Company_3g":"ZTEMT INCORPORATED","modelOf3g":"MC271X","snOf3g":"A000004E123ABD2","iccid":"89860314400200885980","Operators":"CTCC","hardVersion":"1.20","firmwareVersion":"1.0.6.29"}]
1
示例:
$ jq . apinfo.json ??
[
? {
? ? "firmwareVersion": "1.0.6.29",
? ? "hardVersion": "1.20",
? ? "Operators": "CTCC",
? ? "iccid": "DATA DATA",
? ? "snOf3g": "A000004E123ABD2",
? ? "modelOf3g": "MC271X",
? ? "Company_3g": "ZTEMT INCORPORATED",
? ? "MEID_3g": "A000004E123ABD2",
? ? "memorySN": "000000",
? ? "memoryModel": "abcdefg",
? ? "cpuSN": "000000",
? ? "cpuModel": "MIPS 74Kc V4.12",
? ? "mac": "00:1F:64:CE:F3:8E",
? ? "hostsn": "01010730b12014A00477",
? ? "hostModel": "CS-VIC-1999-C",
? ? "stCompany": "Beijing Autelan Technology",
? ? "boardSN": "01010730b12014A00477",
? ? "networkCardMac": "00:1F:64:CE:F3:8F",
? ? "lowFreModel": "AR9344",
? ? "lowFreSN": "000000",
? ? "hignFreModel": "AR9582",
? ? "hignFreSN": "000000",
? ? "gpsModel": "abcdefg",
? ? "gpsSN": "000000"
? }
]
jq .[] apinfo.json?
{
? "firmwareVersion": "1.0.6.29",
? "hardVersion": "1.20",
? "Operators": "CTCC",
? "iccid": "DATA DATA",
? "snOf3g": "A000004E123ABD2",
? "modelOf3g": "MC271X",
? "Company_3g": "ZTEMT INCORPORATED",
? "MEID_3g": "A000004E123ABD2",
? "memorySN": "000000",
? "memoryModel": "abcdefg",
? "cpuSN": "000000",
? "cpuModel": "MIPS 74Kc V4.12",
? "mac": "00:1F:64:CE:F3:8E",
? "hostsn": "01010730b12014A00477",
? "hostModel": "CS-VIC-1999-C",
? "stCompany": "Beijing Autelan Technology",
? "boardSN": "01010730b12014A00477",
? "networkCardMac": "00:1F:64:CE:F3:8F",
? "lowFreModel": "AR9344",
? "lowFreSN": "000000",
? "hignFreModel": "AR9582",
? "hignFreSN": "000000",
? "gpsModel": "abcdefg",
? "gpsSN": "000000"
}
$ jq -r .[].mac apinfo.json?
00:1F:64:CE:F3:8E
$ jq -r '.[] | .mac' apinfo.json?
00:1F:64:CE:F3:8E
$ jq -r '.[] |.mac, .gpsSN' apinfo.json?
00:1F:64:CE:F3:8E
000000
jq -r '.[].mac, .[].gpsSN' apinfo.json?
00:1F:64:CE:F3:8E
000000
————————————————
版權聲明:本文為CSDN博主「linux_zhu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u011641885/article/details/45559031
總結
以上是生活随笔為你收集整理的linux 命令之jq的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kitt2bag 解决“Failed t
- 下一篇: 车企如何趟过「软件的坑」,大众集团或将在