Linux jq 命令 - JSON 数据处理器
介绍
jq 是一个轻量级的和灵活的命令行 JSON 处理器,用于解析、查询和转换 JSON 数据。它可以帮助用户在命令行中轻松地处理和操作 JSON 格式的数据。
jq 的一个常见的使用场景是处理 JSON 输入,设置过滤器应用于其 JSON 文本输入,并将过滤器的结果生成为新的 JSON 文本打印到标准输出。最简单的过滤器是 .
,它将 jq 的输入未经修改地复制到其输出中(格式设置除外)。
另外,需要注意的是,jq 当前仅支持 64 位双精度浮点数(IEEE754)。
- 项目主页:https://jqlang.github.io/jq
- GitHub 仓库:https://github.com/jqlang/jq
安装:
使用前请确保你的系统上已经安装 jq 工具,如果未安装,可以参考下面安装方法:
- Debian/Ubuntu
- CentOS/RHEL
sudo apt install jq
sudo yum install jq
语法:
jq [options] <jq filter> [file...]
jq [options] --args <jq filter> [strings...]
jq [options] --jsonargs <jq filter> [JSON_TEXTS...]
选项:
-c
:使用紧凑而不是漂亮的输出。-n
:使用null
作为单个输入值。-e
:根据输出设置退出状态代码。-s
:将所有输入读取(slurp)到数组中;对其应用过滤器。-r
:输出原始字符串,而不是 JSON 文本。-R
:读取原始字符串,而不是 JSON文本。-C
:为 JSON 着色。-M
:单色(不要为 JSON 着色)。-S
:在输出上排序对象的键。--tab
:使用制表符进行缩进。--arg a v
:将变量$a
设置为值<v>
。--argjson a v
:将变量$a
设置为 JSON 格式的值<v>
。--slurpfile a f
:将变量$a
设置为从<f>
读取的 JSON 文本数组。--rawfile a f
:将变量$a
设置为包含<f>
内容的字符串。--args
:其余参数是字符串参数,而不是文件。--jsonargs
:其余的参数是 JSON 参数,而不是文件。--
:终止参数处理。
示例
以漂亮的方式输出全部 JSON 数据:
$ echo '{ "home": { "bedroom": { "temperature": 25.0 } } }' | jq '.'
{
"home": {
"bedroom": {
"temperature": 25
}
}
}
以紧凑的方式输出全部 JSON 数据:
$ echo '{ "home": { "bedroom": { "temperature": 25.0 } } }' | jq -c '.'
{"home":{"bedroom":{"temperature":25}}}
获取一个键的值(可以试试 .home
、.home.bedroom
、.home?
等过滤条件):
$ echo '{ "home": { "bedroom": { "temperature": 25.0 } } }' | jq '.home.bedroom.temperature'
25