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