2026-06-08 06:55:42
jq是Linux下处理JSON数据的首选工具,支持从基础字段提取到复杂数据过滤、转换和重构,能显著提升数据处理效率。 以下是具体使用方法与技巧:
安装与基础操作Debian/Ubuntu系:sudo apt install jq
RedHat/CentOS系:sudo yum install jq
提取顶层字段:cat data.json | jq .name → 输出 "Alice"
提取原始字符串(无引号):cat data.json | jq -r .name → 输出 Alice
访问嵌套字段:cat data.json | jq .address.city → 输出 "Anytown"
提取数组元素:cat data.json | jq '.courses[].title' → 输出 "Math" 和 "Physics"
创建新JSON结构:cat data.json | jq '{userName: .name, userAge: .age}' → 输出重组后的对象。
筛选学分大于3的课程标题:cat data.json | jq '.courses[] | select(.credits > 3) | .title'输出:"Physics"
将课程数组转换为简洁列表:cat data.json | jq '.courses | map({courseTitle: .title, courseCredits: .credits})'输出:包含courseTitle和courseCredits的新数组。
根据年龄添加状态字段:cat data.json | jq '. + {status: (if .age < 25 then "Young" else "Adult" end)}'输出:新增status字段的对象。
group_by:按字段分组数据。
add:合并数组或计算数值总和。
length:获取数组或字符串长度。
支持复杂路径查询,如 .courses[0].title 提取第一个课程标题。
从GitHub API获取仓库星标数:curl -s
快速提取日志中的特定JSON字段,结合grep过滤关键信息。
解析监控工具输出的JSON数据,提取关键指标(如CPU使用率)。
若字段不存在,jq会返回null而非报错,需通过//提供默认值(如.name // "N/A")。
访问不存在的数组索引时返回null,建议先用length检查数组长度。
处理大文件时,避免复杂嵌套表达式,可分步处理或使用--compact-output减少输出体积。
不同jq版本可能支持不同语法,建议使用最新稳定版。
通过掌握jq的基础操作与高级技巧,可轻松应对Linux环境下的JSON数据处理需求,显著提升自动化脚本与日常运维效率。