mcpField
M
Miller

Miller

官方Agent-ready
github.com数据库与数据10.1kmlr1 天前更新
代码仓库访问官网

关于 Miller

Miller(mlr)是一个命令行工具,用于转换和分析 CSV、TSV、JSON 等结构化记录格式。它支持灵活的数据格式转换、聚合统计和数据过滤,可以轻松集成到 Unix 管道中进行可重复的数据处理。

主要功能

  1. 01在多种格式间转换数据(CSV、JSON、TSV 等)
  2. 02计算统计摘要和数据聚合
  3. 03通过过滤和字段选择处理数据

适用场景

  1. 01在数据分析工作流中快速转换和清理结构化数据
  2. 02构建可复用的数据处理管道
  3. 03从命令行探索和汇总日志或数据文件

安装

选择你的系统或包管理器,复制命令到终端运行。

$
brew install miller

安装完成后运行mlr --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
mlr --csv stats1 -a count -f status data.csv
02
mlr --icsv --ojson cat data.csv

详细介绍

什么是 Miller?

Miller 就像针对 CSV、TSV、JSON、JSON Lines 和位置索引格式等数据格式的 awk、sed、cut、join 和 sort。

Miller 能为我做什么?

使用 Miller,你可以在 CSV、TSV、JSON、JSON Lines 和位置索引等熟悉的格式中使用命名字段,无需计算位置索引。然后,你可以即时添加由现有字段计算得出的新字段、删除字段、排序、统计聚合、美化打印等。

封面图

  • Miller 处理的是键值对数据,而常见的 Unix 工具处理的是以整数为索引的字段:如果后者自然的数据结构是数组,那么 Miller 自然的数据结构就是按插入顺序排列的哈希映射。

  • Miller 可处理多种数据格式,包括但不限于常见的 CSV、TSV 和 JSON/JSON Lines。 (Miller 也能处理位置索引数据!)

在上图中,你可以看到 Miller 如何在多种数据格式中运用键值对数据的共同特性。

安装

你很可能可以为自己的系统获取预构建的 Miller: Ubuntu Ubuntu 16.04 LTS Fedora Debian Gentoo Pro-Linux Arch Linux NetBSD FreeBSD Anaconda Snap Homebrew/MacOSX MacPorts/MacOSX Chocolatey WinGet

操作系统安装命令
Linuxyum install miller
apt-get install miller
snap install miller
Macbrew install miller
port install miller
Windowschoco install miller
winget install Miller.Miller
scoop install main/miller

另请参阅 README-versions.md,查看完整的软件包版本列表。请注意,长期支持(LtS)版本很可能会使用较旧的版本。

另请参阅从源代码构建。

功能

  • Miller 用途广泛,适用于数据清理、 数据精简、统计报告、运维、系统 管理、日志文件处理、格式转换和 数据库查询后处理。

  • 你可以使用 Miller 获取并处理日志文件数据,包括筛选出 相关子流,然后转换为 CSV 格式,并将其载入 全内存/数据帧工具,以便进一步进行统计和/或图形处理。

  • Miller 可以与 R、pandas 等数据分析工具互补: 你可以使用 Miller 清理和准备数据。虽然你可以 完全使用 Miller 进行基础统计,但它的流式数据功能和 单遍算法可以帮助你精简超大型数据集。

  • Miller 可以与 SQL 数据库互补:你可以在数据进入或离开 数据库时,在客户端进行切片、筛选和重新格式化。需要紧急查询磁盘文件中的数据时, 你也可以在无需设置的临时任务中,享受数据库的一些优势。

  • Miller 也超越了经典 Unix 工具,全面迈入现代的 NoSQL 世界:其核心的记录异构特性使 Miller 能够处理不同架构(字段名称)的记录交错出现的数据。

  • Miller 具有流式处理能力:大多数操作一次只需在内存中保留 一条记录,而不是先读入全部输入再生成输出。对于需要保留更多数据的操作(sort、tac、stats1), Miller 也只保留所需的数据量。这意味着只要 功能上可行,你就可以处理大于系统可用 RAM 的文件, 也可以在 tail -f 场景中使用 Miller。

  • Miller 适合管道处理,并可与 Unix 工具集互操作。

  • Miller 的 I/O 格式包括表格化美观打印、按位置 索引(Unix 工具集风格)、CSV、TSV、JSON、JSON Lines 等。

  • Miller 支持格式之间的转换。

  • Miller 的处理过程能识别格式:例如,CSV 的 sort 和 tac 会将标题行保留在最前面。

  • Miller 的性能可媲美 Unix 工具集,吞吐量很高。

  • Miller 使用现代、可移植的 Go 编写,零运行时依赖。 你可以下载或编译单个二进制文件,用 scp 将其传到远程机器, 并可预期它能够正常运行。

开始使用

deepwiki

更多文档链接

社区

GitHub stars Homebrew downloads Conda downloads

All Contributors

构建状态

Multi-platform build status CodeQL status Codespell status 🧪 Snap Builds

从源代码构建

  • 首先:
    • cd /where/you/want/to/put/the/source
    • git clone https://github.com/johnkerl/miller
    • cd miller
  • 使用 make:
    • 构建:make。只需几秒钟即可生成 Miller 可执行文件,即 ./mlr(Windows 上为 .\mlr.exe)。
    • 运行测试:make check。
    • 安装:make install。这会安装可执行文件 /usr/local/bin/mlr 和手册页 /usr/local/share/man/man1/mlr.1(这样你就可以运行 man mlr)。
    • 如果想安装到 /usr/local 以外的位置,可以在运行 make install 之前执行 ./configure --prefix=/some/install/path。
  • 不使用 make:
    • 构建:go build github.com/johnkerl/miller/v6/cmd/mlr。
    • 运行测试:go test github.com/johnkerl/miller/v6/pkg/... 和 mlr regtest。
    • 安装:go install github.com/johnkerl/miller/v6/cmd/mlr@latest 会将程序安装到 GOPATH/bin/mlr。
  • 另请参阅从源代码构建文档页面。
  • 更多开发者信息请参阅 README-dev.md。

面向开发者

许可证

许可证:BSD2

大家对 Miller 的评价

今天我发现了 Miller——它就像 jq,不过是用于 CSV 的:https://t.co/pn5Ni241KM

另外,“Miller 是 R、pandas 等数据分析工具的补充:你可以用 Miller 清理和准备数据。” @GreatBlueC @nfmcclure

— Adrien Trouillaud (@adrienjt) 2020 年 9 月 24 日

被低估的瑞士军刀式命令行电锯。

“Miller 就像是针对 [...] CSV、TSV 和 [...] JSON 的 awk、sed、cut、join 和 sort。” https://t.co/TrQqSUK3KK

— Dirk Eddelbuettel (@eddelbuettel) 2017 年 2 月 28 日

Miller 看起来是处理 CSV 数据的绝佳命令行工具。把 sed、awk、cut、join 全都合为一体:http://t.co/9BBb6VCZ6Y

— Mike Loukides (@mikeloukides) 2015 年 8 月 16 日

Miller 就像是针对 CSV 等按名称索引的数据的 sed、awk、cut、join 和 sort:http://t.co/1zPbfg6B2W——实用工具!

— Ilya Grigorik (@igrigorik) 2015 年 8 月 22 日

顺便说一句,我觉得 Miller 是处理 CSV 的最佳 CLI 工具。我以前需要预处理过大的 CSV 文件并将其载入 R 时会用它(现在有了 vroom,这类情况可能不多了,不过……)https://t.co/kUjrSSGJoT

— Hiroaki Yutani (@yutannihilat_en) 2020 年 4 月 21 日

Miller:一款*感知格式*的数据整理工具,由 @__jo_ker__ 开发,用来克服 awk、sed 等*感知行*的主力工具的局限 https://t.co/LCyPkhYvt9

该项目网站是优秀软件文档的绝佳范例!!

— Donny Daniel (@dnnydnl) 2018 年 9 月 9 日

天啊,这简直是数据瑞士军刀!怎么之前没人向我推荐 Miller https://t.co/JGQpmRAZLv,帮我解决数据库清理 / ETL 问题?

祝贺 @__jo_ker__,这款工具直观易用,能胜任关键的数据管理任务!#DataScienceandLaw #ComputationalLaw

— James Miller (@japanlawprof) 2018 年 6 月 12 日

🤯@__jo_ker__ 的 Miller 可以轻松读取、转换并写入各种表格数据。它是独立工具,速度快,专为流式数据打造(每次处理一行,因此可以处理大于内存容量的文件)。

文档简直令人赞叹。我整个早上都在读!https://t.co/Be2pGPZK6t

— Benjamin Wolfe (he/him) (@BenjaminWolfe) 2021 年 9 月 9 日

贡献者 ✨

感谢所有帮助 Miller 变得更好的朋友们(表情符号说明):

README 配图
Andrea Borruso

🤔 🎨
README 配图
Shaun Jackman

🤔
README 配图
Fred Trotter

🤔 🎨
README 配图
komosa

🤔
README 配图
jungle-boogie

🤔
README 配图
Thomas Klausner

🚇
README 配图
Stephen Kitt

📦
README 配图
Leah Neukirchen

🤔
README 配图
Luigi Baldoni

📦
README 配图
Hiroaki Yutani

🤔
README 配图
Daniel M. Drucker

🤔
README 配图
Nikos Alexandris

🤔
README 配图
kundeng

📦
README 配图
Victor Sergienko

📦
README 配图
Adrian Ho

🎨
README 配图
zachp

📦
README 配图
David Selassie

🤔
README 配图
Joel Parker Henderson

🤔
README 配图
Michel Ace

🤔
README 配图
Matus Goljer

🤔
README 配图
Richard Patel

📦
README 配图
Jakub Podlaha

🎨
README 配图
Miodrag Milić

📦
README 配图
Derek Mahar

🤔
README 配图
spmundi

🤔
README 配图
Peter Körner

🛡️
README 配图
rubyFeedback

🤔
README 配图
rbolsius

📦
README 配图
awildturtok

🤔
README 配图
agguser

🤔
README 配图
jganong

🤔
README 配图
Fulvio Scapin

🤔
README 配图
Jordan Torbiak

🤔
README 配图
Andreas Weber

🤔
README 配图
vapniks

📦
README 配图
Zombo

📦
README 配图
Brian Fulton-Howard

📦
README 配图
ChCyrill

🤔
README 配图
Jauder Ho

💻
README 配图
Paweł Sacawa

🐛
README 配图
schragge

📖
README 配图
Jordi

📖 🤔
README 配图

本项目遵循 all-contributors 规范。欢迎以任何形式参与贡献!

评论

支持 Markdown