miller
Miller 是一个命令行工具,用于查询、调整和重新格式化各种格式的数据文件,包括 CSV、TSV、JSON 和 JSON Lines
简介
miller
是一个用于处理结构化数据的命令行工具,集数据转换、过滤、统计与流式处理于一体。它结合了 awk、sed、cut、join、sort 等 Unix 工具的功能,专为处理结构化文本数据(如 CSV、TSV、JSON 和 JSON Lines)而设计。
快速上手
安装
sh
eval "$(curl https://get.x-cmd.com)" # 安装 x-cmd
x env use miller # 使用 x-cmd 安装 miller
使用方式
读取 CSV 文件内容,并以更加易读的格式输出到终端:
bashmlr --icsv cat input.csv
支持 JSON 等格式,可以将 JSON 数据转换为其他格式或者直接输出。如下命令将 JSON 格式的数据转换为 CSV 格式:
bashmlr --j2c cat input.json
对逗号或制表符分隔的文件进行读取和操作。例如,下面的命令会筛选出
input.csv
文件中age
大于 30 的记录:bashmlr --csv filter '$age > 30' input.csv
功能特点
- 多格式支持:支持 CSV、TSV、JSON、JSON Lines 等多种输入输出格式,并可直接在它们之间进行转换。
- 流式处理:多数操作仅需一次读取一条记录,即可处理超出内存的数据文件。
- 格式感知:排序、反转时自动保留 CSV 的表头行,确保结果语义正确。
- 记录异构支持:可处理字段名不一致的混合记录数据,这是传统 Unix 工具难以胜任的。
- 高性能:在处理百万级记录时,性能与经典 Unix 工具相当。
- 便携性强:用 Go 编写,无运行时依赖,单个二进制文件即可运行,便于远程部署。
竞品和相关作品
- xsv:是一个用 Rust 编写的快速 CSV 命令行工具,用于处理类似 CSV 文件格式的数据,提供了切割、分割、筛选和统计 CSV 数据的功能。
- csvkit:是一组用于处理 CSV 文件的命令行工具集,使用 Python 编写,提供了诸如转换、查询和格式转换等多种功能。
进一步阅读
- miller 源代码 - miller 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 miller 和参与社区贡献。
直接使用:
- 自动下载安装包并在本地展开。
- 直接运行软件包。
sh
x mlr
全局安装:
- 自动下载安装包并在本地展开。
- 自动将执行文件软链接到 x-cmd 的 bin 目录下。
- 当前所有打开的 Shell 都能直接输入命令名使用。
sh
x env use miller
临时安装:
- 自动下载安装包并在本地展开。
- 将所在包的安装目录的 bin 目标临时加入到当前 Shell 的
$PATH
变量。 - 至此,当前 Shell 可直接输入命令名使用。可用于临时使用或决定是否全局安装前尝试该软件包。
sh
x env try miller
https://github.com/johnkerl/miller | |
许可证 | BSD-2-Clause |
语言 | Go |
版本 | v6.13.0 稳定版 |
软件包安装支持 | ||
---|---|---|
x64 | ||
Linux | ||
Darwin | ||
Windows | ||
ARM64 | ||
Linux | ||
Darwin |
二进制包文件来源
oh my x
扫码关注官方微信公众号获取开源软件和 x-cmd 的最新用法与独家资讯 