jq 用 C 语言编写,没有运行时依赖项,因此几乎可以在任何平台上构建。目前已提供 Linux、macOS 和 Windows 的预编译二进制文件。windows使用从该网站下载,然后放入系统环境变量即可
https://jqlang.org/download/# 基本结构
jq [OPTIONS] FILTER [FILE...]
# 常用选项
-c # 紧凑输出(单行)
-r # 原始输出(去引号)
--slurp (-s) # 合并输入为数组
--arg # 传入外部变量操作符 | 描述 | 示例 |
|---|---|---|
. | 当前对象 | jq '.' data.json |
.[] | 数组迭代 | jq '.[]' |
.key | 取属性值 | .name |
.[index] | 数组索引 | .[0] |
, | 多结果输出 | .id, .name |
` | ` | 管道 |
select() | 条件过滤 | select(.age > 18) |
# 提取单个字段
echo '{"name":"拾光","age":18}' | jq '.name' # "拾光"
# 提取嵌套字段
echo '{"user":{"profile":{"name":"拾光"}}}' | jq '.user.profile.name'# 遍历数组
echo '[1,2,3]' | jq '.[]' # 1→2→3
# 索引访问
echo '["a","b","c"]' | jq '.[1]' # "b"
# 切片操作
echo '[0,1,2,3,4]' | jq '.[2:4]' # [2,3]# 数值比较
jq 'select(.price > 100)' products.json
# 正则匹配
jq 'select(.email | test("@qq.com$"))' users.json
# 多条件
jq 'select(.active and (.role=="admin"))' # 数值计算
echo '{"price":99,"tax":0.1}' | jq '.price * (1 + .tax)'
# 统计操作
jq '[.scores[]] | length, min, max, add/.' # 拼接
jq '.first + " " + .last'
# 格式化
jq '"ID:\(.id) | Name:\(.name)"'
# 截取
jq '.description[0:20] + "..."' # 递归展开
recurse(.children[]?)
# 条件中断
if .level > 10 then empty else . end需求 | 命令片段 |
|---|---|
数组转行 | jq -c '.[]' |
CSV输出 | `jq -r '[.id,.name] |
时间戳转换 | `jq '.date |
去重 | unique_by(.id) |
嵌套展开 | `jq '.data |
学习资源
man jq#JQ