linux 命令之jq


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格式文件。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

用作示例的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" } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
$ 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


免責聲明!

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



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