欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

jq

jq — 一款轻量级命令行JSON处理器,让你像操作对象一样优雅解析和转换JSON数据。

如果你是个经常跟JSON打交道的开发者,不管是写API、调接口、分析日志,还是折腾配置文件,你大概率都经历过这种场景:盯着满屏密密麻麻的JSON,手动复制粘贴、肉眼扫描、脑内解析,然后长叹一声“这玩意儿能不能自动处理一下?”

有这种需求,jq 就是你等的那把瑞士军刀。它不是那种“装完就吃灰”的工具,而是那种“一旦用过就回不去”的命令行神器。简单说,它让你能用一行命令完成对JSON的查询、过滤、重组、格式化,甚至批量转换。没有它之前,我处理JSON全靠写Python脚本或者在线解析器;有了它之后,我直接在终端里飞起。

它能干什么,解决什么问题?

jq 最核心的用途就是:把JSON当成一个可编程的数据结构,用类似jq表达式的语法,快速提取你想要的字段、筛选符合条件的对象、重组输出结构。比如:

  • 从API返回的JSON里提取某个字段的值
  • 过滤出所有status为“error”的条目
  • 把多层嵌套的JSON拍平成一维表格
  • 把数组转换成key-value对象
  • 批量修改JSON里的某个值
  • 快速格式化混乱的JSON(比 python -m json.tool 更强大)

尤其适合在Shell脚本、CI/CD流水线、日志分析场景中,让你不用打开编辑器或写完整程序就能搞定JSON处理。它轻量、跨平台、单文件,装完就能用。

下载方式

官方下载点在这里:jq 官网
GitHub 仓库(含预编译二进制):jq GitHub Releases

官网页面非常简洁,直接提供了各个平台的二进制下载链接,以及源码编译方式。我个人建议直接下载预编译的二进制文件,省心省力。

安装方法

macOS

用 Homebrew 最方便:

brew install jq

Linux

Ubuntu/Debian

sudo apt-get install jq

CentOS/RHEL/Fedora

sudo yum install jq        # CentOS 7及以下
sudo dnf install jq        # Fedora / CentOS 8+

Arch Linux

sudo pacman -S jq

通用方式(下载二进制)

如果系统包管理器里的版本太老,或者你不想用包管理器,直接下载二进制:

# 以 Linux amd64 为例
wget https://github.com/jqlang/jq/releases/latest/download/jq-linux-amd64
chmod +x jq-linux-amd64
sudo mv jq-linux-amd64 /usr/local/bin/jq

Windows

  • 用 Chocolatey:choco install jq
  • 用 Scoop:scoop install jq
  • 或者直接下载 exe 文件扔到 PATH 目录里,从 GitHub Releases 里找 jq-windows-amd64.exe 改名为 jq.exe。

基础使用教程

下面我直接上例子,假设你有一个 data.json 文件,内容如下:

{
  "users": [
    { "name": "Alice", "age": 30, "role": "admin" },
    { "name": "Bob", "age": 25, "role": "user" },
    { "name": "Charlie", "age": 35, "role": "user" }
  ],
  "total": 3,
  "source": "internal"
}

1. 格式化输出

没格式化过的JSON看着头疼,直接:

jq . data.json

输出带颜色高亮和缩进的JSON,比 cat data.json | python -m json.tool 更清爽。

2. 提取字段

提取 total 字段:

jq .total data.json
# 输出:3

提取 users 数组第一个元素:

jq '.users[0]' data.json

提取所有用户的名字:

jq '.users[].name' data.json
# 输出:
# "Alice"
# "Bob"
# "Charlie"

3. 按条件筛选

找出所有 role 为 "user" 的用户:

jq '.users[] | select(.role == "user")' data.json

只取他们的名字和年龄:

jq '.users[] | select(.role == "user") | {name, age}' data.json

4. 输出数组

如果你想把筛选结果包成一个数组(而不是一行一个对象),用 [ ] 括起来:

jq '[.users[] | select(.role == "user") | {name, age}]' data.json

5. 与管道配合

jq 最爽的地方是能直接处理管道传来的JSON。比如用 curl 请求一个API,然后直接处理:

curl -s https://api.github.com/repos/jqlang/jq/releases/latest | jq '.tag_name'

6. 修改JSON

给每个用户加一个 active 字段:

jq '.users[] += {"active": true}' data.json

注意:默认不修改原文件,输出到标准输出。如果要保存,重定向到新文件即可。

进阶技巧

1. 使用 --arg 传变量

你想把筛选条件通过变量传进来,而不是硬编码:

ROLE="admin"
jq --arg role "$ROLE" '.users[] | select(.role == $role)' data.json

这样在脚本里动态传参非常方便。

2. 用 -r 输出原始字符串

默认 jq 输出带引号的字符串,比如 "Alice"。如果你只要纯文本(比如写入文件或传给其他命令),用 -r 参数:

jq -r '.users[].name' data.json
# 输出:
# Alice
# Bob
# Charlie

3. 构造新的JSON结构

把 users 数组转成一个以 name 为key的对象:

jq '.users | map({(.name): {age, role}}) | add' data.json

输出:

{
  "Alice": { "age": 30, "role": "admin" },
  "Bob": { "age": 25, "role": "user" },
  "Charlie": { "age": 35, "role": "user" }
}

4. 合并多个JSON文件

比如你有两个JSON文件,想合并:

jq -s '.[0] * .[1]' file1.json file2.json

-s 表示把所有输入读成一个数组,然后 * 是递归合并对象。

5. 用 --slurp 处理多行JSON

如果你的文件里每行是一个独立的JSON对象(比如日志),可以这样一次处理:

jq -s '.[] | select(.status == 200)' multi_line.json

6. 自定义函数

jq 支持定义函数,避免重复写长表达式。比如:

jq 'def active: select(.active == true); .users[] | active' data.json

虽然平时用得不多,但复杂场景下很管用。

7. 与 xargs 或 while read 组合

从JSON里提取ID,然后批量处理:

jq -r '.users[].name' data.json | while read name; do
  echo "Processing $name"
  # 你的业务逻辑
done

最后说两句

jq 的学习曲线其实很低,你只要记住几个核心概念:. 表示当前节点,[] 遍历数组,| 管道传递,{} 构造新对象,select 做过滤。背熟这五个,日常80%的需求都能搞定。

它的文档也很良心,官网有详细的 Manual,还有交互式在线教程 jq play,你可以边试边学。

如果你还没装,强烈建议现在就去装一个。等你哪天在终端里优雅地敲出一行jq命令,把同事折腾了半天的JSON解析任务秒掉时,你会回来感谢我的。

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消