diff --git a/docs/jq.html b/docs/jq.html new file mode 100644 index 00000000..02522e57 --- /dev/null +++ b/docs/jq.html @@ -0,0 +1,291 @@ + + + + +jq 备忘清单 + & jq cheatsheet & Quick Reference + + + + + + + +

+ +jq 备忘清单

+

这个快速参考备忘单提供了使用 jq 命令的各种方法。

+

入门

+

介绍

+

jq 就像用于 JSON 数据的 sed - 您可以使用它来切片、过滤、映射和转换结构化数据

+ +

安装

+
$ sudo apt-get install jq # Debian& Ubuntu
+$ sudo dnf install jq     # Fedora 
+$ sudo zypper install jq  # openSUSE
+$ sudo pacman -S jq    # Arch
+$ brew install jq      # macOS & Homebrew
+$ port install jq      # macOS & MacPorts
+
+

语法

+
$ jq [options] <jq filter> [file...]
+$ jq [options] --args <jq filter> [strings...]
+$ jq [options] --jsonargs <jq filter> [JSON_TEXTS...]
+
+ +

选项

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:--
-c紧凑而不是漂亮的输出
-n使用null作为单个输入值
-e根据输出设置退出状态代码
-s将所有输入读取(吸取)到数组中;应用过滤器
-r输出原始字符串,而不是JSON文本
-R读取原始字符串,而不是JSON文本
-C为 JSON 着色
-M单色(不要为JSON着色)
-S在输出上排序对象的键
--tab使用制表符进行缩进
--arg a v将变量 $a 设置为 value <v>
--argjson a v将变量 $a 设置为 JSON value <v>
--slurpfile a f将变量 $a 设置为从<f>读取的JSON文本数组
--rawfile a f将变量 $a 设置为包含<f>内容的字符串
--args其余参数是字符串参数,而不是文件
--jsonargs其余的参数是JSON参数,而不是文件
--终止参数处理
+

学习示例

+

获取一个键的值

+
$ echo '{"foo": 42, "bar": "less interesting data"}' | jq '.foo'
+
+ +

输出结果

+
42
+
+

数组运算

+
$ echo '[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]' | jq '.[1]'
+
+ +

输出结果

+
{
+  "name": "XML",
+  "good": false
+}
+
+

构造一个数组/对象

+
$ echo '{"user":"stedolan","titles":["JQ Primer", "More JQ"]}' | jq '{user, title: .titles[]}'
+
+ +

输出结果

+
{
+  "user": "stedolan",
+  "title": "JQ Primer"
+}
+{
+  "user": "stedolan",
+  "title": "More JQ"
+}
+
+

计算一个值的长度

+
$ echo '[[1,2], "string", {"a":2}, null]' | jq '.[] | length'              
+
+ +

输出结果

+
2
+6
+1
+0
+
+

取出数组中的键

+
$ echo '{"abc": 1, "abcd": 2, "Foo": 3}' | jq 'keys'              
+
+ +

输出结果

+
[
+  "Foo",
+  "abc",
+  "abcd"
+]
+
+

使用多个过滤器

+
$ echo '{ "foo": 42, "bar": "something else", "baz": true}' | jq '.foo, .bar' 
+
+ +

输出结果

+
42
+"something else"
+
+

管道传递给下一个过滤器

+
$ echo '[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]' | jq '.[] | .name'     
+
+ +

输出结果

+
"JSON"
+"XML"
+
+

条件语句判断

+
$ echo '[1,5,3,0,7]' | jq 'map(select(. >= 2))'        
+
+ +

输出结果

+
[
+  5,
+  3,
+  7
+]
+
+

每个输入调用过滤器

+
$ echo '[1,2,3]' | jq 'map(.+1)'
+
+

输出结果

+
[
+  2,
+  3,
+  4
+]
+
+

条件判断

+
$ echo '2' | jq 'if . == 0 then "zero" elif . == 1 then "one" else "many" end'
+
+ +

输出结果

+
"many"
+
+

字符串插入值并进行运算

+
$ echo '42' | jq '"The input was \(.), which is one less than \(.+1)"'
+
+ +

输出结果

+
"The input was 42, which is one less than 43"
+
+ +

另见

+ +
+ diff --git a/index.html b/index.html index d6df22b2..6dff864e 100644 --- a/index.html +++ b/index.html @@ -108,10 +108,10 @@ Python - + -PostgreSQL +PostgreSQL @@ -240,10 +240,10 @@ Semver - + -Sketch +Sketch @@ -266,12 +266,12 @@ XPath - + -Xcode

+Xcode

-

Linux 命令

+

命令

Ansible @@ -316,10 +316,10 @@ Htop - + -Home Brew +Home Brew @@ -328,6 +328,9 @@ Netstat + + +jq Lsof @@ -349,12 +352,12 @@ YUM

其它

-

+

-Quick Reference +Quick Reference