linux jq 工具解析JSON 字符串
jq是一个处理JSON输入的工具,将给定的过滤器应用于其JSON文本输入,并在标准输出上将过滤器的结果作为JSON生成。
最简单的过滤器是点号【.】,它是标识过滤器,它将jq的输入未经修改地(除了格式化)操作到其输出。
一、选项参数说明
Usage: jq [options] <jq filter> [file...]
-c
紧凑而不是漂亮的打印输出;-C
着色JSON;-n
使用“null”作为单个输入值;-e
根据输出设置退出状态码;-s
读取所有的输入写到一个数组中去;对其应用筛选器;-r
输出原始字符串,而不是JSON文本;-R
读取原始字符串,而不是JSON文本;-M
单色(不着色JSON);-S
输出时使用keys排序;--tab
使用制表符缩进;--arg a v
将变量$a设置为value-v;--argjson a v
将变量$a设置为JSON值-v;--slurpfile a f
将变量$a设置为从-f读取的JSON文本数组
二、过滤器
.
: 默认输出.foo
: 输出指定属性,foo代表属性。.[foo]
:输出指定数组元素。foo代表数组下标。.[]
:输出指定数组中全部元素,
:指定多个属性作为过滤条件时,用逗号分隔|
: 将指定的数组元素中的某个属性作为过滤条件
三、示例
kubectl get pod -l app=mysql -o json | jq '.items | .[] | .metadata.name'
多个过滤器使用逗号分割
jq '.items | .[] | .metadata.name,.metadata.creationTimestamp'
返回数组形式使用中括号处理
jq -C '.items | .[] | [.metadata.name,.metadata.creationTimestamp]'