尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Linux jq命令超全详解:JSON解析/过滤/转换神器,运维开发必备
1. 命令简介jq 是一个由 stedolan 开发的轻量级、灵活且功能强大的命令行 JSON 处理器。它允许你以高效、可编程的方式解析、过滤、转换和格式化 JSON 数据。jq 使用一种简洁的领域特定语言DSL来构建查询和操作是处理 JSON 数据的理想工具尤其适用于脚本编写、API 响应处理和日志分析。其源代码托管在 GitHub 上jq 项目主页。2. 语法格式jq 的基本语法遵循以下格式jq [选项] 过滤器 [文件...]此外还有两种处理非文件输入的变体语法# 将后续参数作为字符串处理 jq [选项] --args 过滤器 [字符串...] # 将后续参数作为原始 JSON 文本处理 jq [选项] --jsonargs 过滤器 [JSON_TEXTS...][选项]用于修改 jq 行为的各种标志。过滤器一个 jq 表达式定义了如何处理输入的 JSON 数据。最简单的过滤器是 .它表示整个输入对象。[文件...]一个或多个包含 JSON 数据的文件路径。如果未指定文件或文件名为 -jq 将从标准输入stdin读取数据。3. 常用选项及说明选项说明-c紧凑输出。生成单行、无格式化的 JSON而不是美观打印pretty-print的输出。-r原始输出。直接输出字符串内容而不是带引号的 JSON 字符串。对于输出纯文本非常有用。-s吞入slurp模式。将所有的输入项例如多行 JSON 对象读取到一个大数组中然后对整个数组应用过滤器。-n空输入。使用 null 作为单个输入值。通常用于从零开始构造 JSON。-e基于输出设置退出码。如果最后一个输出值非 false 或 null则退出状态码为 0否则为 1。适用于脚本中的条件判断。-R读取原始字符串。将输入视为原始字符串而不是 JSON。常与 -r 和 --slurp 等选项结合处理文本。-C彩色输出。为 JSON 输出着色提高可读性默认行为如果输出到终端。-M单色输出。禁止为 JSON 输出着色。-S排序对象键。在输出时对 JSON 对象的所有键进行排序按字母顺序。--tab使用制表符缩进。在美观打印输出时使用制表符\t进行缩进而不是空格。--arg NAME VALUE定义字符串变量。创建一个名为 $NAME 的变量其值为字符串 VALUE。在过滤器中通过 $NAME 引用。--argjson NAME JSON_TEXT定义 JSON 变量。创建一个名为 $NAME 的变量其值为解析 JSON_TEXT 后得到的 JSON 实体。--slurpfile NAME FILE从文件定义数组变量。读取 FILE 中的所有 JSON 实体每行一个将其作为数组赋值给变量 $NAME。--rawfile NAME FILE从文件定义原始字符串变量。将 FILE 的整个内容作为单个字符串赋值给变量 $NAME。--args剩余参数作为字符串。命令行中此选项之后的所有参数都将被视作字符串参数而不是文件名。在过滤器中通过 $ARGS.positional[] 数组访问。--jsonargs剩余参数作为 JSON。命令行中此选项之后的所有参数都将被解析为 JSON 文本。在过滤器中通过 $ARGS.positional[] 数组访问。--参数终止符。表示选项结束后续所有参数即使以 - 开头也被视为文件名或过滤器的一部分。4. 示例用法以下示例展示了 jq 过滤器的强大功能。假设我们有一个名为 data.json 的文件内容如下{ users: [ {id: 1, name: Alice, active: true, tags: [admin, dev]}, {id: 2, name: Bob, active: false, tags: [user]}, {id: 3, name: Charlie, active: true, tags: [dev, ops]} ], count: 3 }1. 基本访问与格式化# 1.1 美化输出整个JSON jq . data.json # 1.2 紧凑输出 jq -c . data.json # 1.3 获取顶级键的值 jq .count data.json # 输出: 3 jq .users data.json # 输出users数组 # 1.4 访问嵌套属性获取第一个用户的名字 jq .users[0].name data.json # 输出: Alice2. 数组操作# 2.1 遍历数组所有元素 jq .users[] data.json # 2.2 获取数组特定索引的元素 jq .users[1] data.json # 输出Bob的信息 # 2.3 数组切片 (获取前两个用户) jq .users[:2] data.json # 2.4 映射map提取所有用户的名字 jq .users | map(.name) data.json # 输出: [Alice, Bob, Charlie] # 2.5 简化版映射更常用的提取数组字段方法 jq .users[].name data.json3. 过滤与选择# 3.1 选择活跃用户 jq .users[] | select(.active true) data.json # 3.2 选择包含特定标签的用户 jq .users[] | select(.tags | index(dev)) data.json # 找到tags中包含dev的用户 # 3.3 组合条件 (活跃且是开发) jq .users[] | select(.active and (.tags | index(dev))) data.json4. 构造与转换# 4.1 构造新对象 jq .users[] | {username: .name, userId: .id} data.json # 4.2 使用管道组合多个操作计算活跃用户数 jq [.users[] | select(.active)] | length data.json # 4.3 重组数据结构创建用户名到ID的映射 jq .users | map({(.name): .id}) | add data.json5. 使用变量# 5.1 通过命令行传递字符串变量 jq --arg user_name Alice .users[] | select(.name $user_name) data.json # 5.2 传递JSON变量 jq --argjson user_id 1 .users[] | select(.id $user_id) data.json注意事项输入必须是有效的 JSONjq 默认要求输入是严格的 JSON。对于非标准格式如带有尾随逗号的 JSON可以使用 --slurp-s模式或配合 -R 选项进行原始字符串处理后再解析。原始输出模式-r当过滤器输出结果为字符串且你希望直接将其用于管道传递给其他命令或写入文件时使用 -r 选项至关重要否则输出的字符串会带有 JSON 引号。脚本中的条件判断-e 选项允许你根据 jq 的输出结果false 或 null来设置 shell 脚本的退出码这在自动化脚本中非常有用。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取
RELATED

相关推荐

IDM激活脚本终极指南:简单三步告别下载限制

IDM激活脚本终极指南:简单三步告别下载限制

IDM激活脚本终极指南:简单三步告别下载限制 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 如果你正在寻找一个安全、可靠的方式来优化Internet Down…

📅 2026/10/20 18:23:37
PostgreSQL 16.3 远程访问配置:修改 pg_hba.conf 与 postgresql.conf 的 2 个安全层级

PostgreSQL 16.3 远程访问配置:修改 pg_hba.conf 与 postgresql.conf 的 2 个安全层级

PostgreSQL 16.3 远程访问安全配置实战指南在云原生和分布式架构盛行的今天,数据库远程访问能力已成为现代应用开发的标配需求。PostgreSQL 作为企业级开源数据库的标杆,其灵活的访问控制机制既提供了强大的连接管理能力,也带来了复杂的安全配…

📅 2026/11/4 19:30:00
Docker 20.10.7 与 Kubernetes 1.20.9 版本锁定:CentOS 7 环境 5 步避坑指南

Docker 20.10.7 与 Kubernetes 1.20.9 版本锁定:CentOS 7 环境 5 步避坑指南

Docker 20.10.7 与 Kubernetes 1.20.9 版本锁定:CentOS 7 环境 5 步避坑指南在CentOS 7上部署特定版本的Kubernetes集群(Docker 20.10.7 K8s 1.20.9)时,版本锁定和环境配置往往是导致部署失败的关键因素。本文将聚焦五个核心避坑…

📅 2026/10/29 15:48:13
MORE NEWS

更多资讯

📰

金华考低压电工证报名保姆级教程:别让培训费打水漂!

金华考低压电工证报名保姆级教程:别让培训费打水漂! 怕考不过白交培训费?别慌!这是一篇专为金华考低压电工证报名准备的保姆级教程,帮你从报名到拿证全流程避坑,真正帮你把钱花在刀刃上。 金华考低压电工证报名流程全解…

📰

电工作业安全图标丢了怎么办?内部消息告诉你怎么补办

电工作业安全图标丢了怎么办?内部消息告诉你怎么补办 之前考的证在外省能不能转过来?这事儿我见过太多人问了,尤其是在咱们信阳浉河区,很多应届工程类毕业生刚毕业就忙着找工作,手上拿着的电工作业安全图标证却因为各种原因丢了,或者想把外地的证转到本…

📰

玉溪通海县学电工证在哪考别踩坑!教你避开培训费打水漂

玉溪通海县学电工证在哪考别踩坑!教你避开培训费打水漂 怕考不过白交培训费?玉溪通海县学电工证在哪考,现在就给你讲清楚,别等报名了才后悔。我干这行快十年,见过太多人交了钱,最后连证都拿不到,甚至考不过连补考都没资格。今天我拿实话讲,教你从报名…

📰

金台电工证官方回应:别再被中介坑了,报名全攻略来了

金台电工证官方回应:别再被中介坑了,报名全攻略来了 你是不是也遇到过这样的问题: 不知道去哪报名怕被中介坑 ?特别是像【金台电工证】这种特种作业证,关系到施工安全和职业发展,一不小心就可能掉进坑里。今天我作为在应急管理部门摸爬滚打了多年的老…

📰

电工证属于什么卡?含金量决定你能不能在行业立足

电工证属于什么卡?含金量决定你能不能在行业立足 证书过期了不知道怎么复审延期,你是不是也遇到过这种情况?电工证作为特种作业人员必须持有的上岗凭证, 含金量…

📰

鹤庆电工证哪里考的多 别踩坑!工地太忙根本没时间复习考试

鹤庆电工证哪里考的多 别踩坑!工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,这话我听得太多了。作为一名在应急管理领域干了多年的“老手”,我太理解一线工人的难处。你可能天天在工地跑,连吃饭都得抢时间,哪还有精力去准备电工证考试?但…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬