Ubuntu 26.04 实用 jq 命令技巧(日常用得上的真实案例)

在 Ubuntu 26.04 下用 jq 处理 JSON 数据的实用技巧,从简单查看、过滤、提取,到循环、拼接、条件判断,全是日常脚本里真正用得上的用法。


在 Ubuntu 26.04 里处理 API 返回、配置文件、日志时,JSON 格式随处可见。

jq 就是专门干这个的神器,轻量、高效、Shell 脚本必备。

先确保安装好:

sudo apt update
sudo apt install jq -y

下面全是实战型用法,不搞花里胡哨,直接复制就能用。


1. 基础:格式化 JSON,让杂乱内容变整齐

很多接口返回压缩成一行,根本没法看。

echo '{"name":"server","ip":"192.168.1.10","status":"running"}' | jq .

自动格式化、缩进、高亮,一目了然。


2. 提取单个字段

最常用的就是取某个值。

data='{"id":1001,"name":"Ubuntu","version":"26.04"}'
echo $data | jq -r .name

输出:

Ubuntu

-r 代表去掉引号,脚本里赋值特别方便。


3. 提取多层嵌套 JSON

实际配置大多是嵌套的。

echo '{"server":{"lan":{"ip":"10.0.0.5"}}}' | jq -r .server.lan.ip

直接层级点下去就行。


4. 遍历数组,逐条取出内容

很多接口返回数组结构,批量处理必备。

echo '[{"name":"a","port":80},{"name":"b","port":443}]' | jq .[].name

也可以循环下标:

jq .[1]   # 取第二条
jq .[0]   # 取第一条

5. 过滤数组:只保留符合条件的项

比如只保留状态为 running 的服务。

echo '[{"name":"nginx","status":"stopped"},{"name":"docker","status":"running"}]' \
| jq '.[] | select(.status=="running")'

6. 只显示需要的字段,精简输出

不想看整段 JSON,只保留关键字段。

echo '{"name":"api","url":"https://example.com","code":200,"time":120}' \
| jq '{name,url}'

输出一个精简结构:

{
  "name": "api",
  "url": "https://example.com"
}

7. 结合 curl 处理 API 数据

这是运维最常用的组合。

curl -s https://api.github.com/meta | jq -r .ips[]

8. 检查 JSON 是否合法

写脚本时非常有用,避免格式错误炸脚本。

echo "{}" | jq . > /dev/null && echo "合法JSON"

9. 从 JSON 中批量取出值,做成列表

用于 Shell 循环遍历。

for ip in $(echo '["1.1.1.1","8.8.8.8"]' | jq -r .[]); do
    echo "IP: $ip"
done

10. 修改、替换 JSON 中的值

不改变结构,只更新内容。

echo '{"port":80}' | jq '.port=8080'

11. 删除字段

echo '{"name":"test","password":"123456"}' | jq 'del(.password)'

12. 长度、判断、简单计算

echo '{"items":[1,2,3]}' | jq '.items | length'

总结(Ubuntu 26.04 环境下记住这些就够)

  • jq . 格式化 JSON
  • jq -r .字段 提取值(无引号)
  • jq .[] 遍历数组
  • jq select(条件) 过滤内容
  • jq {a,b} 精简输出
  • 配合 curl、循环脚本无敌

日常写运维脚本、处理配置、解析接口,jq 基本能包办所有 JSON 操作,比自己写 Python 快得多。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress