linux命令之jq
linux 命令之jq
2015年05⽉07⽇ 11:47:50
阅读数:14816
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格式⽂件。
linux字符串转数组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": 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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。