name: 数据处理 描述: “使用 jq 处理 JSON,使用 yq 处理 YAML/TOML。高效地过滤、转换、查询结构化数据。触发条件:解析 JSON、从 YAML 提取、查询配置、Docker Compose、K8s 清单、GitHub Actions 工作流、package.json、过滤数据。” 兼容性: “需要 jq 和 yq CLI 工具。安装:brew install jq yq (macOS)。” 允许工具: “Bash Read”
数据处理
从命令行高效地查询、过滤和转换结构化数据(JSON、YAML、TOML)。
工具
| 工具 | 命令 | 用途 |
|---|---|---|
| jq | jq '.key' file.json |
JSON 处理 |
| yq | yq '.key' file.yaml |
YAML/TOML 处理 |
jq 基础
# 提取单个字段
jq '.name' package.json
# 提取嵌套字段
jq '.scripts.build' package.json
# 从数组提取
jq '.dependencies[0]' package.json
# 提取多个字段
jq '{name, version}' package.json
# 深度导航
jq '.data.users[0].profile.email' response.json
# 按条件过滤
jq '.users[] | select(.active == true)' data.json
# 转换每个元素
jq '.users | map({id, name})' data.json
# 统计元素数量
jq '.users | length' data.json
# 原始字符串输出
jq -r '.name' package.json
yq 基础
# 提取字段
yq '.name' config.yaml
# 提取嵌套字段
yq '.services.web.image' docker-compose.yml
# 列出所有键
yq 'keys' config.yaml
# 列出所有服务名称(Docker Compose)
yq '.services | keys' docker-compose.yml
# 获取容器镜像(K8s)
yq '.spec.template.spec.containers[].image' deployment.yaml
# 更新值(原地)
yq -i '.version = "2.0.0"' config.yaml
# TOML 转 JSON
yq -p toml -o json '.' config.toml
快速参考
| 任务 | jq | yq |
|---|---|---|
| 获取字段 | jq '.key' |
yq '.key' |
| 数组元素 | jq '.[0]' |
yq '.[0]' |
| 过滤数组 | jq '.[] | select(.x)' |
yq '.[] | select(.x)' |
| 转换 | jq 'map(.x)' |
yq 'map(.x)' |
| 计数 | jq 'length' |
yq 'length' |
| 键 | jq 'keys' |
yq 'keys' |
| 美化输出 | jq '.' |
yq '.' |
| 紧凑输出 | jq -c |
yq -o json -I0 |
| 原始输出 | jq -r |
yq -r |
| 原地编辑 | - | yq -i |
使用场景
- 读取 package.json 依赖项
- 解析 Docker Compose 配置
- 分析 Kubernetes 清单
- 处理 GitHub Actions 工作流
- 从 API 响应中提取数据
- 过滤大型 JSON 数据集
- 配置文件操作
- 数据格式转换
额外资源
如需完整模式库,请加载:
./references/jq-patterns.md- 数组、过滤、转换、聚合、输出格式化./references/yq-patterns.md- Docker Compose、K8s、GitHub Actions、TOML、YAML 修改./references/config-files.md- package.json、tsconfig、eslint/prettier 模式