SuperAPI AI 工具集

jq

数据与分析

查看项目

更新于 10-15 23:48

技能介绍

用途:在命令行处理 JSON,对文件、API 响应和命令输出做过滤、转换、聚合与重塑。

主要能力与惯用法:jq -r '.name' 输出原始字符串(不带引号);jq -c '.' 输出紧凑格式,管道传递 NDJSON 时必需;jq '.field // "default"' 用替代运算符应对 null 或缺失字段;jq '.maybe?' 抑制索引错误;jq --arg env prod '.[$env]' 注入 shell 值,避免把变量插值进过滤字符串;jq -n --argjson d "$JSON" '$d.x' 无输入、从参数构造;jq -r '.[] | [.a, .b] | @csv' 用 @csv/@tsv/@sh 正确处理引号;to_entries | map(...) | from_entries 操作键;walk(if type == "object" then del(.secret) else . end) 递归编辑。

流式与内存:-s 把整个输入读成一个数组,方便但全量载入内存;大文件或 NDJSON 应逐条处理,如 jq -c 'select(.important)' stream.ndjson,或对单个超大文档用 jq --stream 'select(length == 2)' 做叶子级流式。应在 group_by/sort_by 之前尽早过滤,因为它们必须物化整个集合。

限制与替代:jq 不支持原地编辑,需写临时文件再移动,因为 jq '...' f.json > f.json 会在读取前截断输入。CSV/TSV 用 xsv,YAML 用 yq,对 JSON 做分析型 SQL 用 duckdb(read_json_auto)。

错误诊断:parse error: Invalid numeric literal 表示 JSON 格式错误,可用 jq empty file.json 快速校验,无输出即有效;Cannot index string with string 表示对非对象做字段访问,可用 jq 'type' 检查;Cannot iterate over null 表示字段缺失,可用 .field // []。debug 会把中间值打印到 stderr,不干扰输出流。

适用场景:命令行数据清洗、API 响应提取、日志与 NDJSON 处理、配置与密钥字段删除等。具体安装方式与平台支持暂未提供。