jq 使用说明
jq 是一个 轻量级且灵活的命令行 JSON 处理工具。 它可以用于 格式化、查询、过滤、修改、合并 JSON 数据,是后端开发、前端调试、日志分析和 API 调用中常用的利器。
相比 grep、awk 等传统文本工具,jq 专门面向 JSON,支持 JSON 的结构化操作。
✨ 功能特点
- 格式化输出:美化 JSON,使其更易读
- 字段提取:快速获取 JSON 中的某个字段或嵌套值
- 条件过滤:对数组、对象进行过滤、筛选
- 数据转换:修改字段值,构造新 JSON
- 脚本支持:支持复杂的 JSON 处理表达式
🔧 安装
Debian / Ubuntu
bash
sudo apt install jqCentOS / RHEL
bash
sudo yum install jqmacOS (Homebrew)
bash
brew install jq验证安装
bash
jq --version🚀 基本用法
1. JSON 格式化
bash
echo '{"name": "hunter.l", "sex": "男", "city": "西安"}' | jq输出:
json
{
"name": "hunter.l",
"sex": "男",
"city": "西安"
}2. 获取字段值
bash
echo '{"name": "hunter.l", "sex": "男", "city": "西安"}' | jq ".name"输出:
json
"hunter.l"3. 访问嵌套字段
bash
echo '{"user": {"name": "hunter.l", "info": {"age": 25, "city": "西安"}}}' | jq ".user.info.city"输出:
json
"西安"4. 处理数组
bash
echo '[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]' | jq ".[].name"输出:
json
"张三"
"李四"获取第二个元素:
bash
echo '[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]' | jq ".[1]"输出:
json
{
"id": 2,
"name": "李四"
}5. 条件过滤
获取 id=2 的对象:
bash
echo '[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]' | jq '.[] | select(.id==2)'输出:
json
{
"id": 2,
"name": "李四"
}6. 修改字段值
bash
echo '{"name":"张三","city":"西安"}' | jq '.city="北京"'输出:
json
{
"name": "张三",
"city": "北京"
}7. 构造新 JSON
bash
echo '{"name":"张三","city":"西安"}' | jq '{username: .name, location: .city}'输出:
json
{
"username": "张三",
"location": "西安"
}8. 读取文件
bash
jq '.' data.json🖥️ 常用参数
| 参数 | 说明 |
|---|---|
. | 选择整个 JSON |
.key | 选择对象中的某个字段 |
.[n] | 选择数组中的第 n 个元素(0 起始) |
select(cond) | 条件过滤 |
map(expr) | 映射数组 |
add | 数组求和或字符串拼接 |
length | 获取数组或对象长度 |
📊 使用场景
- 日志分析:从 JSON 日志中提取关键字段
- API 调试:格式化
curl返回的 JSON 数据 - 运维脚本:结合
jq自动化处理 JSON 配置 - 数据清洗:批量修改或提取 JSON 数据
