惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Commits to openclaw:main
Recent Commits to openclaw:main
U
Unit 42
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
博客园 - Franky
云风的 BLOG
云风的 BLOG
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Palo Alto Networks Blog
NISL@THU
NISL@THU
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
C
Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
小众软件
小众软件
T
Threat Research - Cisco Blogs
Project Zero
Project Zero
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Register - Security
The Register - Security
The Hacker News
The Hacker News
F
Fortinet All Blogs
Security Latest
Security Latest
Cisco Talos Blog
Cisco Talos Blog
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
T
The Exploit Database - CXSecurity.com
量子位
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Proofpoint News Feed
G
GRAHAM CLULEY
D
DataBreaches.Net
P
Privacy International News Feed
Y
Y Combinator Blog
Simon Willison's Weblog
Simon Willison's Weblog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
P
Proofpoint News Feed

博客园 - iTech

7万星的AI交易框架:让大模型模拟投行多空辩论,自动做交易决策 71000颗星的AI交易团队:让大模型模拟投行分工,自动做交易决策 13400颗星的开源项目:输入一句话,AI全自动帮你做短视频 102颗星的沙盒:当AI学会自己写代码、跑测试、做部署 AI 技术日报 - 2026-05-08 29k 星的 PageIndex:不用向量数据库,靠推理就能做 RAG 每天花两小时刷信息?这个开源项目帮你全自动搞定 读源码像读小说?试了 DeepWiki 和 Zread,我再也不想裸读 GitHub 了 Matt Pocock 开源的这套 .claude 技能,为什么让工程师集体上头? Cursor Team Kit:Cursor 官方团队在用的 17 个 AI 工作流 AI 技术日报 - 2026-05-07 AI 技术日报 - 2026-05-06 AI 技术日报 - 2026-05-05 Anthropic CEO 说 12 个月内程序员要失业,我扒完他的底牌,发现事情没那么简单 把工程师的肌肉记忆装进 Claude Code,这个 4300 Star 的项目我后悔没早用 AI 技术日报 - 2026-05-04 AI 技术日报 - 2026-05-03 AI 技术日报 - 2026-05-02 六大 Agent 框架横评:谁支持 Skills?谁能自动创建 Agent?MCP 呢? Wechatsync:一个 Chrome 插件,一键把文章同步到 31 个平台 LangChain 开源了 Open SWE:Stripe、Ramp、Coinbase 内部都在造的编程 Agent Cockpit:把 Claude Code 从终端里搬出来,装进浏览器 Cursor 把自家的 AI Agent 开放了:写几行 TypeScript 就能调 Cursor 干活 AI 技术日报 - 2026-05-01 AI 写代码每次结果都不一样?Archon 用 YAML 工作流把 AI 编程变成流水线 AI 写代码比你快了,但你还是得学编程——只不过学法得换 腾讯的龙虾特工队:4 个 AI Agent 同日更新,全家桶正式成型 Agno 不做更聪明的 Agent,它要把所有 Agent 框架包进同一个操作系统 Hermes Agent 终于有了像样的 Web 界面,而且还支持远程访问 Datawhale 出了一套 29 学科知识地图,把 AI 的底牌全掀了 Hermes Agent 在聊天框里就能用的 20 种高级功能 一份 AGENTS.md 能顶一次模型升级?Augment Code 用数据说了算 NVIDIA 开源了一个「AI 沙箱」,20K Star,让 Agent 跑代码不再裸奔 60ms 冷启动、5MB 内存:腾讯开源的这个沙箱让 Docker 安全隔离像笑话 AI 技术日报 - 2026-04-30 AI 技术日报 - 2026-04-29 AI 技术日报 - 2026-04-28 Goose:Linux 基金会亲儿子,能撼动 Claude Code 和 OpenCode 吗? AI 技术日报 - 2026-04-27 AI 技术日报 - 2026-04-26 Google 把价值20美元/月的东西免费了,102K人已经抢到了 OpenClaw 和 Claude Code 网络搜索配置指南 AI 技术日报 - 2026-04-25 Anthropic 为什么遥遥领先:从 Cat Wu 专访看AI霸主的底层逻辑 Mac 本地跑大模型完全指南:你的苹果电脑就是 AI 工作站 同样 70B 参数,为什么 MoE 只激活 13B 就能打平 Dense? DeepSeek-V4 技术报告里藏着一条线:华为昇腾 NPU 已完成推理验证 DeepSeek-V4 深夜炸场:1M 上下文、384K 输出、双模型,API 定价直接卷到底 MacBook Air 跑大模型实测:Ollama、llama.cpp、LM Studio 谁才是本地推理之王? AI 技术日报 - 2026-04-24 OpenCode:Claude Code 的最佳平替 2026 开源大模型五国杀:Qwen 3.6 vs Gemma 4 vs Llama 4 vs GLM-5.1 vs DeepSeek V4 MCP 与 Skills 的你死我活:Anthropic 的 Agent 生态野心与开发者的站队困境 给 AI Agent 配搜索,国内能用的搜索 API 实测对比 AI 技术日报 - 2026-04-23 CC Switch:49K Star 的 Claude Code 登录绕过神器,还能管 Codex 和 Gemini CLI NVIDIA 开出 32 万美元年薪招 AI Agent 工程师,JD 里藏着这些信号 fast-mirror-skill 技术拆解:一个小而完整的 Claude Skill 是怎么设计的 Cursor 值 600 亿美元?马斯克这次赌的不是技术,是入口 AI 技术日报 - 2026-04-22 别再问 AI 能不能赚钱了:3 个上班族亲测有效的副业方法(2026 最新版) 10 分钟从零搞定 Hermes Agent:飞书微信双通道丝滑上线 AI 技术日报 - 2026-04-21 Anthropic 实战总结:AI Agent 的 3 种工作流模式,选错代价很大 安装 openclaw,hermes 慢的想发疯,fast-mirror-skill 来救了 Claude Routines:你下班睡觉了,Agent 还在为你干活 微信飞书里敲一个斜杠就能干活:Hermes Quick Command 到底多省事 AI 正在疯狂吃电:算力尽头是电力,谁能解这道题? AI 技术日报 - 2026-04-20 3K 行代码造一个越用越聪明的 AI Agent:GenericAgent 登顶 GitHub Trending 高德途途封神机器人半马,背后的 ABot-Claw 到底是什么 人们希望 AI 能干啥?Anthropic 调查:第一名不是赚钱,是变强 AI 时代人们在担心什么?Anthropic 的 13 条焦虑排行榜 OpenAI 官方 Agent SDK 来了:22k Star,支持 100+ 模型,Python 10 行代码上手 AI 技术日报 - 2026-04-19 OpenAgents Workspace:让 Claude Code 和 Codex 在同一个群里干活 Claude 是要干掉整个软件行业吗? Claude 官方推荐多 Agents 设计模式 多 Agent 系统的 5 种协调模式:选错了模式,再强的 Agent 也白搭 AI 技术日报 - 2026-04-18 AI 技术日报 - 2026-04-17 Better-Harness:让AI Agent自己优化自己的革命性框架 OpenClaw Workspace 完全指南:我的AI编程工作流 DeepSeek内蒙草原高薪招聘:AI时代的数字牧民梦,还是营销噱头? 2 核 2G 的阿里云 ECS 能跑 OpenClaw 吗?能,但有点折腾 AI 技术日报 - 2026-04-16 OpenCLI:一个命令行搞定 16+ 内容平台的神器 从零到精通:OpenClaw CLI 命令完全指南 AI 技术日报 - 2026-04-15 AI Agent 如何自我进化?Hermes Agent Self-Evolution 深度解析 AI 技术日报 - 2026-04-14 为什么你的飞书 Bot 总是连不上?OpenClaw Gateway 架构深度解析 OpenClaw 连接飞书的原理:Gateway、Channel 与消息流转 国内安装 Hermes Agent 踩坑全记录:从 GitHub 超时到正常跑起来的每一步 35 万 Star 的 OpenClaw:5 分钟部署你的私人 AI 助手,直连飞书 AI 技术日报 - 2026-04-13 公司用 AI 筛简历,这个开源项目让候选人用 AI 反选公司 为什么 Google ADK 可能是你下一个 Agent 框架——7 个改变游戏规则的特性 Microsoft Agent Framework 深度解析:架构设计与实战落地 AI 技术日报 - 2026-04-11
jq:JSON 界的 sed/awk,一个 13 年历史的 CLI 工具如何成为现代基础设施的隐形基石
iTech · 2026-06-17 · via 博客园 - iTech

jq:JSON 界的 sed/awk,一个 13 年历史的 CLI 工具如何成为现代基础设施的隐形基石

如果你在终端里处理过 JSON,大概率用过或见过这个命令:

curl https://api.example.com/data | jq '.items[].name'

一行代码,从 API 响应中提取所有 item 的 name 字段。没有 import,没有 package.json,没有 venv,没有 compile step。

这就是 jq——一个用 C 编写的命令行 JSON 处理器,零运行时依赖,单二进制文件。2013 年发布 1.3 版本,2025 年 6 月发布 1.8.0,7 月发布 1.8.1。13 年了,它依然是 JSON 数据处理的事实标准。

项目地址:https://github.com/jqlang/jq

本文大纲

  • 为什么 JSON 需要专用处理器
  • 核心设计哲学:管道 + 过滤器
  • 从基础到进阶:jq 的能力光谱
  • Streaming:处理多 GB 大文件
  • 现代工作流中的隐形基石
  • 1.7 到 1.8:五年沉寂后的回归
  • 为什么 jq 不可替代

为什么 JSON 需要专用处理器

Linux 有三驾马车——sed、awk、grep——处理文本数据极其强大。但 JSON 不是普通文本,它是结构化数据。

你可以用 grep 从 JSON 里提取某一行,但 grep 不理解 JSON 的嵌套结构。你可以用 sed 替换某个值,但 sed 不知道那个值在对象树的哪一层。你可以用 awk 做计算,但 awk 需要先自己解析 JSON。

jq 的定位非常精准:它是 sed/awk/grep 的 JSON 等价物。 理解 JSON 的对象、数组、嵌套、类型,在此基础上提供切片、过滤、映射、变换的能力。

核心设计哲学:管道 + 过滤器

jq 的核心模型和 Unix 管道一脉相承:数据从左到右流经一系列过滤器,每个过滤器做一件事,组合起来完成复杂变换。

# 基础:提取字段
jq '.name' package.json

# 管道:提取 + 过滤
jq '.dependencies | to_entries[] | select(.value | startswith("^"))' package.json

# 变换:构建新对象
jq '{name, version, deps: (.dependencies | keys)}' package.json

. 是恒等过滤器(identity),原样输出。.name 提取 name 字段。| 是管道操作符,把左边的输出传给右边。[] 展开数组。这些基础元素组合起来,表达能力远超你的直觉。

从基础到进阶:jq 的能力光谱

基础操作

# 提取数组中所有元素
jq '.[]' data.json

# 提取特定字段
jq '.[].name' data.json

# 过滤数组
jq '.[] | select(.type == "dolphin")' data.json

对象构建

jq 可以用 {}[] 从零构建新的 JSON 结构:

# 从平铺数据构建新对象
jq '{total: (.[] | .clams) | add, count: length}' data.json

# 映射成新的数组
jq '[.[] | {name: .name, isDolphin: (.type == "dolphin")}]' data.json

字符串插值

jq '.[] | "\(.name) is a \(.type)"' data.json

reduce:有状态的累积计算

reduce 是 jq 中最强大的操作符之一,类似函数式编程中的 fold:

# 计算所有 clams 的总和
jq 'reduce .[] as $item (0; . + $item.clams)' data.json

# 构建频率统计
jq 'reduce .[] as $item ({}; .[$item.type] += 1)' data.json

递归遍历

.. 操作符递归遍历整个 JSON 树,配合 select 可以在任意深度查找数据:

# 在整个 JSON 树中查找所有包含 "error" 的键
jq '.. | objects | select(has("error"))' response.json

# 提取所有字符串值
jq '.. | strings' nested.json

条件与错误处理

# 条件分支
jq '.[] | if .clams > 3 then "rich" else "poor" end' data.json

# try-catch
jq 'try .invalid.path catch "not found"' data.json

模式匹配与解构

# 数组解构
jq '.[] | . as {name: $n, type: $t} | "\($n): \($t)"' data.json

# 可选字段
jq '.[] | .optional_field // "default"' data.json

Streaming:处理多 GB 大文件

jq 默认会将整个 JSON 文档加载到内存。对于多 GB 的大文件,这不可行。

--stream 标志启用流式解析器,逐 token 处理,内存占用极低:

# 流式处理大文件
jq --stream '.[0] | .[0]' huge-file.json

# 配合 --slurpfile 使用
jq --stream 'fromstream(1|truncate_stream(inputs))' huge-file.json | head -100

流式模式的 trade-off 是用速度换内存——解析更慢,但可以处理远超内存容量的文件。对于 ETL 管道中的大数据集处理,这是唯一可行的方式。

现代工作流中的隐形基石

jq 的应用场景早已超越了"美化 JSON 输出":

DevOps 与 Kubernetes

# 提取 Pod 状态
kubectl get pods -o json | jq '.items[] | {name: .metadata.name, status: .status.phase}'

# 检查 Deployment 副本数
kubectl get deployment my-app -o json | jq '.status.availableReplicas'

CI/CD 管道

# 从 package.json 提取版本号
VERSION=$(jq -r '.version' package.json)

# 检查 API 响应状态
curl -s https://api.healthcheck.io | jq -e '.status == "healthy"'

API 数据处理

# 从 GitHub API 提取 PR 信息
curl -s https://api.github.com/repos/org/repo/pulls | \
  jq '.[] | {number, title, user: .user.login, created: .created_at}'

# 批量提取和格式化
curl -s https://api.example.com/users | \
  jq '[.[] | {id, email}] | sort_by(.id)'

AI/ML 数据预处理

# 清洗训练数据
jq '[.[] | select(.label != null) | {text: .content, label}]' raw-data.json > clean-data.json

# 转换格式适配模型输入
jq -c '.[] | {prompt: .question, completion: .answer}' dataset.json

Shell 脚本中的 JSON 操作

# 合并两个 JSON 文件
jq -s '.[0] * .[1]' file1.json file2.json

# JSON 转 CSV
jq -r '.[] | [.name, .type, .clams] | @csv' data.json

# 环境变量注入
jq --arg env "$ENVIRONMENT" '. + {environment: $env}' config.json

1.7 到 1.8:五年沉寂后的回归

jq 的版本历史本身就是一段故事:

版本 时间 说明
1.3 2013 年 5 月 早期版本
1.4 2014 年 6 月 稳定性改进
1.5 2015 年 8 月 大版本:datetime、math、regexp、try/catch、streaming parser、模块系统
1.6 2018 年 11 月 最后一个由原作者维护的版本
五年沉寂 2018-2023 项目几乎停滞
1.7 2023 年 9 月 新管理团队回归,重组 GitHub 组织
1.7.1 2023 年 12 月 安全修复(CVE-2023-50246, CVE-2023-50268)
1.8.0 2025 年 6 月 大量改进
1.8.1 2025 年 7 月 最新稳定版

1.5 版本引入的 streaming parser 和模块系统是 jq 走向生产级工具的转折点。1.7 版本的回归标志着项目治理的成熟——新的管理员和维护者团队接手,修复了安全漏洞,恢复了发布节奏。

1.8 系列则带来了更多改进,确保 jq 在现代环境中持续保持竞争力。

为什么 jq 不可替代

在 AI 时代,为什么一个 13 年前的 CLI 工具依然不可替代?

零依赖 + 单二进制 = 到处可用。 scp 一个二进制到远程服务器,立即可用。没有 Python 环境、没有 Node.js、没有 pip install 的网络问题。在 Docker 镜像中加一行 RUN apk add jq,在 CI/CD 中零配置。

C 语言写的 = 快。 对于 JSON 处理,jq 的性能接近原生速度。Python 的 json 模块需要解释器开销,Node.js 需要 V8 启动时间,jq 直接读取、解析、输出。

表达能力不成比例地高。 一行 jq 等价于几十行 Python 或 JavaScript。jq '[.[] | select(.x > 0) | {a: .y}]' 这一行做的事,用其他语言需要循环、条件判断、对象构建、数组收集。

管道模型的组合性。 jq 的过滤器可以无限组合,就像 Unix 管道一样。这种组合性是命令式脚本无法提供的。

确定性。 给定相同的输入和相同的过滤器,jq 的输出是确定的。没有随机性,没有 LLM 的不确定性,没有版本间行为差异。在 CI/CD 管道中,这种确定性至关重要。

jq 的存在证明了一件事:好的 CLI 工具不会过时。 它们解决的问题是永恒的——把数据从一种形式变成另一种形式,快速、可靠、可组合。sed 和 awk 诞生于 1970 年代,jq 诞生于 2013 年,它们的生命力来自同一个来源:对问题域的深刻理解和极简的设计哲学。

项目地址:jq
在线试用:play.jqlang.org


作者: itech001
来源: 公众号:AI人工智能时代
网站: https://www.theaiera.cn/
每日分享最前沿的AI新闻资讯和技术研究。

本文首发于 AI人工智能时代,转载请注明出处。