Miller 多格式数据处理器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/miller-csv-tsv-json-data-processor。
技能介绍
要解决的具体问题
处理 CSV、TSV、JSON 这类结构化数据时,工程师通常得把 awk、sed、cut、join、sort 等多个命令拼进同一条管道。问题在于,每个工具各说各的方言:awk 按列号取字段,join 要求输入预先排序,sed 面向整行文本做替换。一旦需要在格式间转换(比如把 CSV 转成 JSON Lines),这种手工拼装会迅速变脆:列名对不上、转义规则不一致、管道中途断流。
技能如何工作
Miller(mlr)把这些操作收敛到一个面向带名字索引的结构化数据的命令行工具里。其核心能力包括:
- 多格式读写:支持
CSV、TSV、JSON和JSON Lines,可在一次调用中完成格式转换 - 算子式处理逻辑:用统一的 DSL 表达字段筛选、记录过滤和聚合统计(如
filter、put、stats1),而不是在多个命令行工具之间来回传递 - 常见工具的替代组合:把
awk/sed/cut/join/sort的典型使用场景整合进单一入口
典型工作方式可拆成三步:
- 调用
mlr并声明输入/输出格式(如mlr --icsv --ojson) - 在同一条命令里编写处理逻辑,如
filter、put、stats1 - 结果直接落到标准输出或文件,便于继续与下游管道串联
适用边界与注意点
- 深度保留操作:
sort、tac、stats1等操作需要上游保留相应状态(更深的保留期),在流式数据上的表现需结合具体输入规模评估 - 定位是结构化数据:适合有明确 schema 的表格/记录型数据;对自由文本日志的正则替换场景,
sed/grep仍是更直接的选择 - 资料覆盖有限:随附文档只提供上手指引和上游链接,完整安装要求与高级用法需要查阅上游文档(如 Miller 官方 README)后再确认
使用场景
- 分析师有一批 CSV,需要按列名过滤并输出成 JSON Lines
- 运维用 `stats1` 对 JSON 日志做字段聚合统计
- 数据工程把多份 TSV 按某个 key 做 join 后统一输出
- 研究员在管道里对 CSV 做 `put` 派生字段计算
适合人员
- 处理表格数据的后端工程师,需要写脚本批量转换 CSV/TSV 到 JSON
- 维护日志管道的 SRE,要在 shell 里对 JSON Lines 做字段筛选与统计
- 做数据清洗的数据工程师,常把多个结构化文件 join 成单一输出
- 写命令行工具的开发者,想把 awk/sed/cut/join/sort 收敛到单一入口