jq 命令行 JSON 处理器使用全解:从零安装到跑通三个高频命令
【免费下载链接】jqCommand-line JSON processor项目地址: https://gitcode.com/GitHub_Trending/jq/jq
你又一次盯着三百行的 API 返回,手动数括号找某个字段,或者干脆把 JSON 粘到网页格式化工具里再贴回来。jq 就是为这件事而生的:一个命令行 JSON 处理器,纯 C 编写、零运行时依赖,一条命令就能完成切片、过滤、转换。本文讲清楚它如何在 Windows、Linux、macOS 上三分钟装好,以及最常用的三条命令。
装好它:按你的环境二选一
不用背各系统的安装流程,下面这张表就是全部,哪一行是你的环境就抄哪一行:
| 环境 | 一行命令 | 备注 |
|---|---|---|
| macOS(Homebrew) | brew install jq | 最省事,Mac 用户首选 |
| Ubuntu / Debian | sudo apt update && sudo apt install jq | 包源版本可能落后官方一两个小版本 |
| CentOS / RHEL | sudo yum install jq | 同上 |
| Windows(Scoop) | scoop install jq | 自动进 PATH,无需额外配置 |
| Windows(Chocolatey) | choco install jq | Scoop 的替代方案 |
📦 以上路线装的都是官方预编译二进制,单文件、无依赖地狱,装完即可用。内网环境用不了包管理器时,从发布页下载对应平台的二进制,丢进 PATH 目录即可(Windows 下记得改名jq.exe)。装完跑一下jq --version,看到jq-1.8.x就说明配置完成。
进阶:从源码编译
只有需要静态链接或定制功能时才值得走这条路:
git clone https://gitcode.com/GitHub_Trending/jq/jq cd jq && git submodule update --init && autoreconf -i ./configure --with-oniguruma=builtin && make -j8 && sudo make install三个高频场景,命令直接抄
假设当前目录有个users.json:[{ "id": 1, "name": "alice", "status": "active" }, { "id": 2, "name": "bob", "status": "closed" }]。
取字段
过滤表达式用.字段.子字段逐层下钻,把要取的值路径写出来就行;数组用从 0 开始的[n]下标。
jq '.[0].name' users.json输出:"alice"
筛数据
.[]逐个遍历数组元素,select只保留满足条件的项,条件里可以写任意常规 jq 表达式;竖线|表示后面还能接更多处理步骤。
jq '.[] | select(.status == "active")' users.json输出:{"id":1,"name":"alice","status":"active"}
转格式
-r输出原始字符串,配合@tsv把 JSON 直接变成分列的表格,粘进 Excel 就能用;想要紧凑单行输出则换-c参数。
jq -r '.[] | [.name, .status] | @tsv' users.json输出:alice active
装不上 / 跑不通?先过这三关
- PATH 没加:装完命令找不到,Windows 下跑
where jq、Linux/macOS 跑which jq,查不到就把安装目录加进 PATH,重开终端(Scoop 默认装在~/scoop/shims)。 - 权限问题:手动放置二进制文件时先
chmod +x jq;系统级安装用sudo。 - 引号问题:报错的第一大来源。Linux/macOS 用单引号包裹 jq 表达式,内部双引号原样写;Windows cmd 必须外层双引号、内部双引号转义,如
jq ".[] | select(.status == \"active\")"。
三条都不中招的话,多半是包源里的 jq 版本太旧、不认识新语法,先升级,或走上面的源码路线。
再往下走一步
- 完整函数手册(官方手册的 YAML 源文件)
- 真实测试用例(几十条可直接抄的过滤表达式)
找一份手头的 API 真实返回,对着它跑一条select——jq 的用法,从第一条跑通的命令才开始。
【免费下载链接】jqCommand-line JSON processor项目地址: https://gitcode.com/GitHub_Trending/jq/jq
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考