jq 命令行工具:JSON 处理神器
jq 是命令行 JSON 处理神器,被称为"JSON 的 sed/awk"。本文介绍 jq 的安装方法、核心功能、实用示例和适用场景。无论是调试 API、处理 kubectl 输出,还是解析配置文件,jq 都能让你事半功倍。
折
折腾侠
2026/03/24 发布
15约 2 分钟318 字 / 201 词00
🔧 jq 命令行工具:JSON 处理神器
工具简介
jq 是一个轻量级、命令行 JSON 处理器,被称为"JSON 的 sed/awk"。它能让你像操作文本一样轻松解析、过滤、转换 JSON 数据。
核心功能
- 解析格式化:美化缩进或压缩 JSON
- 字段提取:精准获取嵌套数据
- 数据过滤:按条件筛选数组元素
- 格式转换:JSON ↔ CSV/TSV 互转
- 链式操作:管道组合多个处理步骤
安装方法
Bash
# macOS
brew install jq
# Ubuntu/Debian
sudo apt-get install jq
# CentOS/RHEL
sudo yum install jq
# Windows (Chocolatey)
choco install jq
使用示例
Bash
# 1. 格式化 JSON
curl -s https://api.github.com/repos/openclaw/openclaw | jq .
# 2. 提取特定字段
curl -s https://api.github.com/repos/openclaw/openclaw | jq ".stargazers_count"
# 3. 过滤数组(找出 star>100 的仓库)
curl -s https://api.github.com/users/openclaw/repos | jq "[.[] | select(.stargazers_count > 100)]"
# 4. 嵌套数据提取
kubectl get pods -o json | jq ".items[].metadata.name"
# 5. 组合操作(统计各语言仓库数)
curl -s https://api.github.com/users/openclaw/repos | jq "group_by(.language) | map({language: .[0].language, count: length})"
适用场景
- ✅ 调试 API 响应,快速查看返回数据
- ✅ 处理 kubectl/Docker 等工具的 JSON 输出
- ✅ 脚本中解析配置文件(package.json、tsconfig.json)
- ✅ CI/CD 流水线中提取版本号和构建信息
- ✅ 日志分析(结构化 JSON 日志)
替代方案
| 工具 | 特点 | 适用场景 |
|---|---|---|
| INLINE_CODE_0 | 支持更复杂的查询表达式 | 需要复杂条件过滤 |
| INLINE_CODE_1 | Python 内置,无需安装 | 简单格式化 |
jmespath | 交互式 JSON 查看器 | 探索性分析 |
python -m json.tool | YAML 版本的 jq | 处理 YAML 文件 |
学习资源
- 官方手册:
fx - 在线练习:https://jqplay.org/
- 速查表:
yq
一句话总结:jq 是每个开发者都应该掌握的瑞士军刀,5 分钟学习,终身受益。