目录
命令行参数
jq官方manual
jq是一个json命令行下的解析工具。命令语法是:
1 | Usage: jq [options] <jq filter> [file...] |
基本的filter语法
标识符 .
直接用可以表示整个json。jq . 表示输出整个jsonObject标识符 .foo, .foo.bar
管道 |
可以把前一个filter的结果进入下一个filter1
2
3jq '.top | .second'
'{ "top": { "second": 2}}'
2
内置数据类型和表达式支持
jq 内部支持的数据类型有:数字,字符串,数组和对象(object)。并且在这些数据类型的基础上, jq 提供了一些基本的操作符来实现一些基本的运算和数据操作。列举如下:
数学运算。对于数字类型,jq 实现了基本的加减乘除(/)和求余(%)运算。对于除法运算,jq 最多支持 16 位小数。
字符串操作。jq 提供字符串的连接操作(运算符为’+’,例如:”tom “+”jerry”结果为”tom jerry”),字符串的复制操作(例如:’a’*3 结果为’aaa’),以及字符串分割操作(将字符串按照指定的分割符分成数组,例如”sas”/“s”的结果为[“”,”a”,””],而”sas”/“a”的结果为[“s”,”s”]。
数组操作。jq 提供两种数组运算:并集(‘+’)运算,结果数组中包含参与运算的数组的所有元素。差集运算(‘-‘),例如:有数组 a,b, a-b 的结果为所有在 a 中且不包含在 b 中的元素组成的数组。
对象操作。jq 实现了两个 JSON 对象的合并操作(merge)。当两个参与运算的对象包含相同的属性时则保留运算符右侧对象的属性值。有两种合并运算符:’+’和’‘。所不同的是,运算符’+’只做顶层属性的合并,运算符’‘则是递归合并。例如:有对象 a={“a”:{“b”:1}}, b={“a”:{“c”:2}},a+b 的结果为{“a”:{“c”:2}},而 a*b 的结果为{“a”:{“b”:1,”c”:2}}
比较操作:jq 内部支持的比较操作符有==, !=,>,>=,<=和<。其中,’==’的规则和 javascript 中的恒等(‘===’)类似,只有两个操作数的类型和值均相同时其结果才是 true。
逻辑运算符: and/or/not。在 jq 逻辑运算中,除了 false 和 null 外,其余的任何值都等同于 true。
默认操作符(‘//‘), 表达式’a//b’表示当表达式 a 的值不是 false 或 null 时,a//b 等于 a,否则等于 b。
- 本文作者: KCN
- 本文链接: https://www.kcn.me/2020/03/25/jq的使用/
- 版权声明: 未经允许,请勿转载