#csv #data #cli

app datamars

https://gnu.ac.cn/software/datamash/ 的 Rust 重新实现

7 个不稳定版本 (3 个重大更改)

0.4.0 2022 年 8 月 20 日
0.3.0 2022 年 8 月 3 日
0.2.3 2022 年 7 月 25 日
0.2.1 2022 年 6 月 26 日
0.1.0 2022 年 6 月 6 日

#1868 in 数学

Apache-2.0

19KB
547 代码行

datamars

我自己的 GNU datamash 版本。

此软件为预_alpha 版,缺少许多功能。

安装

如果您想获取最新版本,请使用 cargo install datamars

注意:可执行文件名为 ms

实现细节

算法基本上是这样的

args = parse_args()
# parse ops
ops = build_operation_objects(args.ops)

groups = dict(str->list[ops])

for line in file: 
    parts = line.split(args.delimiter)
    group = groupby(parts) if grouping is defined else default
        
    if group not in groups:
        # build new objects for every group
        groups.add_group(group, ops)
        
    for op in groups[group]:
        op.process(parts)
        
for group in groups:
    print(group, [op.result() for op in group])

每个组有一组操作。操作保持组的运行状态。操作为组中的每个新条目更新状态 - 但只更新所需的状态,例如不需要计算平方偏差。应该很快。

依赖项

~3.5MB
~66K SLoC