linux jq 工具解析JSON 字符串

2020-03-31 0 By admin

jq是一个处理JSON输入的工具,将给定的过滤器应用于其JSON文本输入,并在标准输出上将过滤器的结果作为JSON生成。
最简单的过滤器是点号【.】,它是标识过滤器,它将jq的输入未经修改地(除了格式化)操作到其输出。

一、选项参数说明

Usage: jq [options] <jq filter> [file...]
  1. -c紧凑而不是漂亮的打印输出;
  2. -C着色JSON;
  3. -n使用“null”作为单个输入值;
  4. -e根据输出设置退出状态码;
  5. -s读取所有的输入写到一个数组中去;对其应用筛选器;
  6. -r输出原始字符串,而不是JSON文本;
  7. -R读取原始字符串,而不是JSON文本;
  8. -M单色(不着色JSON);
  9. -S输出时使用keys排序;
  10. --tab使用制表符缩进;
  11. --arg a v将变量$a设置为value-v;
  12. --argjson a v将变量$a设置为JSON值-v;
  13. --slurpfile a f将变量$a设置为从-f读取的JSON文本数组

二、过滤器

  1. . : 默认输出
  2. .foo: 输出指定属性,foo代表属性。
  3. .[foo] :输出指定数组元素。foo代表数组下标。
  4. .[]:输出指定数组中全部元素
  5. :指定多个属性作为过滤条件时,用逗号分隔
  6. | : 将指定的数组元素中的某个属性作为过滤条件

三、示例

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]'