Miller 6 发布,数据文件的命令行工具

来源: OSCHINA
编辑: Alias_Travis
2022-01-14

Miller 是一个命令行工具,用于查询、调整和重新格式化各种格式的数据文件,包括 CSV、TSV、JSON 和 JSON Lines。

用户体验

Miller 6 的功能主要由 2021 年 Miller 用户调查结果和 GitHub Issues 中的大量反馈来推动。

性能

在简单处理方面,性能与 Miller 5 相当,在复杂处理链方面,Miller 6 由于改进了多核利用率,因此性能远远优于 Miller 5,除此之外,CSV I/O 也有明显改善。

文档改进

文档和在线帮助(mlr --help)已经被完全重写。

改进 Windows 体验

Miller 最初是为类 Unix 操作系统开发的,包括 Linux 和 macOS。Miller 5.2.0 成为了第一个支持 Windows 的版本。从 6.0.0 版本开始,Miller 直接在 Windows 上构建。

现在,Windows 上的体验与 Linux,NetBSD / FreeBSD和 macOS 上的体验几乎相同,MSYS2 不再是必需的 。

输出着色

每当输出到终端时,Miller 都会对键和值使用单独的可自定义颜色。

改进的命令行解析

Miller 6 具有 getoptish 命令行解析:

  • xyz自动扩展为x -y -z,例如mlr cut -of shape,flagmlr cut -o -f shape,flag相同
  • -foo=bar会自动扩展为-foo bar,因此(例如mlr --ifs=commamlr --ifs comma相同.

改进了 DSL 解析的错误消息

对于mlr putmlr filter,解析错误消息现在包含位置信息:

mlr: cannot parse DSL expression.
Parse error on token ">" at line 63 columnn 7.

脚本

脚本现在更容易支持带有sh#!,以及现在支持带有mlr -s#!。对于 Windows,也可以使用mlr -s。这些变化有助于减少反斜杠引起的混乱,让用户在少打字的同时做更多的事情。

改进的国际化支持

现在可以用 UTF-8 编写字段名称、局部变量等,例如mlr --c2p filter '$σχήμα == "κύκλος"' παράδειγμα.csv

改进的日期时间/时区支持

包括支持通过函数参数指定时区,作为TZ环境变量的替代方法。

对压缩输入的进程内支持

除了--prepipe gunzip之外,在 Miller 6 中现在还可以使用--gzin标志。如果你的文件以.gz结尾,那你甚至无需这样操作,Miller 将通过文件扩展名自动检测并自动解压缩mlr --csv cat foo.csv.gz.z

支持读取网络网址

可以读取带有https://http://file:// 前缀的输入:

mlr --csv sort -f shape \\  <https://raw.githubusercontent.com/johnkerl/miller/main/docs/src/gz-example.csv.gz>

改进 JSON / JSON Lines 支持和数组

数组现在在 Miller 的put/filter编程语言中受支持,此外array现在是一个关键字,因此它不再可用作局部变量或 UDF 名称。

改进数值转换

Miller 6 最核心的部分是深度重构如何从文件内容解析数据值、如何推断类型以及如何将它们转换回文本到输出文件。

在 Miller 5 及更低版本中,所有值都存储为字符串,然后仅根据需要转换为 int/float。

在 Miller 6 中,可解析为 int/float 的东西从读取输入数据的那一刻起就被视为 int/float,并且它们通过动词链传递。

重复字段名称的重复数据删除

默认情况下,除 JSON / JSON Lines 之外的所有文件格式的字段名称都会被重复数据删除。

对 IFS 和 IPS 正则表达式支持

IFSIPS可以是正则表达式:分别使用--ifs-regex--ips-regex代替--ifs--ips。还可以使用--ifs space --repifs--ifs-regex '()+'

大小写折叠排序选项

sort 现在接受-c-cr选项,用于大小写折叠的升序/降序排序。

更多详情可查看:https://miller.readthedocs.io/en/latest/new-in-miller-6/

展开阅读全文
7 收藏
分享
加载中
最新评论 (1)
这个工具不错,还有 jq xsv yq,可以组合使用。
2022-01-16 20:59
0
回复
举报
更多评论
1 评论
7 收藏
分享
返回顶部
顶部