jq 命令行 JSON 处理工具怎么用:三平台安装与常用命令详解
它是什么在命令行快速解析、过滤、转换 JSON 数据,避免手写完整脚本。
jq 是命令行 JSON 处理器,覆盖 Windows、macOS、Linux 安装命令,演示格式化、取字段、条件过滤、排序分组等高频用法,并给出 -r 去引号、PowerShell 引号等常见问题的解法。
详细介绍
jq 是什么,适合谁用
jq 是开源的命令行 JSON 处理器(GitHub 仓库 jqlang/jq),用类似 sed、grep 的表达式对 JSON 做查询、过滤和结构转换。典型场景有两个:调试接口返回时在终端快速查看、提取字段;在 shell 脚本和 CI 流程里做自动化数据处理,不必临时写 Python 脚本。程序为单文件、无依赖,写作时最新稳定版是 1.8.1,官方 GitHub Releases 提供 Windows、macOS、Linux 全平台预编译包。
三平台安装与验证
- Windows:执行
winget install jqlang.jq(或scoop install jq);手动安装则从 GitHub Releases 下载 jq-windows-amd64.exe,改名为 jq.exe 放入 PATH 目录。 - macOS:
brew install jq。 - Linux:Debian/Ubuntu 用
sudo apt install jq,Fedora/RHEL 用sudo dnf install jq。 - 验证:终端执行
jq --version,能输出版本号即安装成功。
上手:格式化、取字段与输出控制
基础用法是格式化:jq . data.json 把压缩的 JSON 展开为缩进排版。取字段用点号路径:嵌套字段写 .user.email,遍历数组写 .items[].name。三个高频输出参数:-r 让字符串不带引号输出(拼接变量、导出文本必需);-c 输出紧凑单行;jq . data.json > pretty.json 把结果存成文件。
高频表达式速查
假设数据是数组,每个元素含 name、price 字段:
- 条件过滤:
jq '.[] | select(.price > 10)' - 重组字段:
jq '[.[] | {name, price}]',只保留指定键并输出新数组 - 计数与排序:
jq 'length'、jq 'sort_by(.price)' - 分组:
jq 'group_by(.type)',接| map(length)可统计各组条数 - 查看全部键:
jq 'keys' - 默认值兜底:
jq '.name // "unknown"'
四个容易踩的坑
- Windows 引号:cmd 下表达式要用双引号,如
jq ".name";PowerShell 支持单引号,但表达式内部含双引号时需转义。 - 字段不存在时 jq 输出 null 而不报错,链式取值建议写成
.user?.email?,中间为 null 时不会中断。 - 写脚本注意:jq 最后一个输出为 null 或 false 时退出码是 1,用
$?判断成败要考虑这点。 - jq 会把整个输入载入内存,处理几百 MB 以上的大文件时留意内存占用。
更新记录
最近更新:2026-10-02
软件参数速览
参数对比
| 项目 | jq 命令行 JSON 处理工具怎么用 |
|---|---|
| 版本 | jq-1.8.2 |
| 大小 | 1 MB |
| 平台 | win |
| 网盘 | 夸克/百度 |
| 优点 | 轻量高效,链式管道操作,跨平台,支持多种输出格式如 raw/compact。 |
| 缺点 | 需学 jq 专用语法;复杂转换可读性差,不适合二进制数据。 |
历史版本
本站收录该软件的多个真实版本,可按下表选用:
| 版本 | 平台 | 大小 | 网盘 | 入口 | 官网 |
|---|---|---|---|---|---|
| jq-1.8.2 | win | 1 MB | 夸克/百度 | jq 命令行 JSON 处理工具怎么用 jq-1.8.2(查看/下载) | —— |
下载
下载由本站收录的国内网盘提供(夸克 / 百度 / 蓝奏),国内访问快、不限速;网盘链接均经审核,如失效欢迎反馈。
可替代 / 相似软件
以下工具与本文软件定位相近(按内容相似度排序),可按需选型:
| 软件 | 相似度 | 主要功能 | 入口 |
|---|---|---|---|
| grep/sed/awk 对 JSON 的脆解析 | 相关 | — | 官网评估 |
| 以及部分简单 Python/Perl 脚本 | 相关 | — | 官网评估 |
怎么选(决策参考)
替代 grep/sed/awk 对 JSON 的脆解析,以及部分简单 Python/Perl 脚本。
运维、开发、数据工程师等需高效处理 JSON 的命令行爱好者。
需要复杂业务逻辑或非命令行环境,以及处理超大 JSON 流的场景。
轻量高效,链式管道操作,跨平台,支持多种输出格式如 raw/compact。
需学 jq 专用语法;复杂转换可读性差,不适合二进制数据。
GitHub 约 27k star,多数 Linux 发行版默认软件源,更新频率每季度。
成熟
在 shell 管道中需提取 JSON 字段或重构 JSON,一行命令优先选 jq。
处理逻辑复杂度高、需要工程化时,用 Python/jq 皆可但建议选主流语言。
常见问题
Windows 提示 jq 不是内部或外部命令怎么办?
说明 jq.exe 不在 PATH 中。用 winget install jqlang.jq 安装会自动配置;手动下载的用户可把 jq.exe 放入已在 PATH 里的目录,或把其所在目录添加到环境变量 PATH,重开终端后用 jq --version 验证。
jq 输出的字符串总是带双引号,怎么去掉?
加 -r 参数,例如 jq -r '.name',字符串会以原始文本输出。把结果拼进 shell 变量、生成 CSV 或纯文本时都必须用它。
字段不存在导致报错或输出 null,如何处理?
用可选路径 .user?.email? 遇到 null 不中断;用 .name // "默认值" 提供兜底。另外注意 jq 最后一个输出为 null 或 false 时退出码为 1,脚本里判断执行结果时要留意。
jq 能一次处理多个 JSON 文件吗?
可以。jq '.name' a.json b.json 会依次处理两个文件;要把多个文件合并成一个数组处理,用 --slurpfile files a.json b.json 后通过 $files 引用;对换行分隔的多条 JSON 可用 -s 参数合并。
jq 和 python -m json.tool 有什么区别?
json.tool 只能格式化,不能查询过滤;jq 除了排版还支持管道组合的表达式,可直接嵌入 shell 脚本和 CI 流程完成字段提取、过滤、统计,不需要为每个小任务单独写 Python 代码。