当前位置:首页>Linux>Linux命令速查 -- JSON 速查表

Linux命令速查 -- JSON 速查表

  • 2026-09-09 02:47:03
Linux命令速查 -- JSON 速查表

简介

jq是标准的命令行 JSON 处理器:它从文件或标准输入读取 JSON,应用过滤器,然后打印结果。最简单的过滤器.仅用于美化打印。
jq "." file.jsoncurl-s https://api.github.com/users/torvalds | jq "."echo'{"name": "Linux"}' | jq "."
各有优势的替代品:jaq(更快的 jq 克隆版)、dasel(同时支持 YAML、TOML、XML)、fx和jless(交互式查看器)、gron(使 JSON 可被 grep)、jo(创建 JSON)、jc(将经典命令输出转换为 JSON)。

选择值

过滤器通过路径定位值:.key用于对象字段,[0]用于数组索引,[]用于遍历所有元素。-r以原始格式打印字符串(不带引号)。
echo '{"name": "Linux"}' | jq ".name"jq ".user.address.city" file.jsonjq ".items[0]" file.jsonjq -r".items[].name" file.json
在其他工具中实现相同的选择:
echo'{"name": "Linux"}' | dasel -r json '.name'echo'{"name": "Linux"}' | fx .nameecho'{"name": "Linux"}' | jshon -e name

过滤与转换

jq 过滤器通过|链式组合,就像 Shell 管道一样。select()保留匹配的元素,map()转换每个元素。
jq '.items[] | select(.price > 10)' file.jsonjq '.items | map(.name)' file.jsonjq '.items | length' file.jsonjq 'keys' file.jsonjq '.items | sort_by(.price)' file.json
从现有字段构建新对象。
jq '.items[] | {title: .name, cost: .price}' file.json

修改

使用=设置或添加字段,使用del()删除字段。jq 从不会原地编辑;将输出重定向到新文件。
echo '{"name": "Linux"}' | jq '.year = 1991'echo '{"name": "Linux", "year": 1991}' | jq 'del(.year)'echo '{"name": "Linux"}' | dasel put string -r json '.year' '1991'echo '{"name": "Linux", "year": 1991}' | dasel delete -r json '.year'

创建

jo从 Shell 参数构建 JSON;jq -n仅从过滤器构建。
jo -pname=Linux year=1991jq -n'{name: "Linux", year: 1991}'

Grep 与探索

gron将 JSON 扁平化为离散的赋值语句,以便使用普通的grep搜索,然后用-u重新组装。jless和fx以折叠和搜索功能交互式浏览大型文档。
gron file.json | grep"name"gron file.json | grep"name" | gron -ujless file.jsonfx file.json

转换

yq将 jq 风格的过滤器应用于 YAML,dasel在不同格式间转换。jc将经典命令的输出转换为 JSON,以便用 jq 处理。
yq ".name" config.yamldasel -r json -w yaml < file.jsonjc ifconfig | jq ".[0].ipv4_addr"
机器友好的紧凑输出:jq -c每个文档打印一行,适用于 JSON Lines 流。

最新文章

随机文章