#iterator #merge #regex #cli #pattern

bin+lib imex

一个库/命令行工具,用于将多个迭代器/文件合并为一个,可选使用IMEx(迭代器合并表达式)来控制合并。

3个不稳定版本

0.2.1 2020年9月29日
0.2.0 2020年9月21日
0.1.0 2020年8月10日

#120 in #merge

MIT/Apache

38KB
773

IMEx

Latest version Documentation

一个库/命令行工具,用于将多个迭代器/文件合并为一个,可选使用IMEx(迭代器合并表达式)来控制合并。

编写IMEx

IMEx基于正则表达式。IMEx语法的快速参考

  • 数字 - 表示从迭代器中消耗项目的索引
  • () - 定义一个分组
  • * - 重复前面的数字/分组,直到相关迭代器耗尽
  • {x} - 重复前面的数字/分组 x 次,或直到相关迭代器耗尽。

示例

"0110" 在两个迭代器上:结果是一个合并的迭代器,它以第一个迭代器的第一个项目开始,然后是第二个迭代器的第一个两个项目,然后是第一个迭代器的第二个项目

"(01)*" 在两个迭代器上:结果是一个合并的迭代器,其元素交替于输入迭代器的元素之间,直到它们都耗尽。

"(012){4}(122)*" 在三个迭代器上:结果是一个合并的迭代器,其元素旋转通过输入迭代器的元素4次,然后重复选择第二个迭代器的一个元素,然后是第三个迭代器的两个元素,直到它们都耗尽。

IMEx作为CLI工具

使用CLI工具可以让你逐行合并多个文件。为了尊重Unix哲学,stdin也可以与其他文件合并,结果打印到屏幕。

用法

文件作为位置参数提供,IMEx可以使用-选项提供。IMEx的数字将引用你提供的文件之一,顺序与你提供的顺序相同,0索引。文件名-保留用于stdin。

因此,以下命令将合并ls命令的输出与两个其他文件,从stdin取10行,然后从每个文件中取一行,直到它们都耗尽,然后输出到名为out.txt的文件中

$ ls | imex - file1.txt file2.txt -i "(0{10}12)*" > out.txt

安装

如果你是Rust开发者,你可以通过cargo安装IMEx

$ cargo install imex

目前,imex不在任何其他包管理器中存在。

IMEx作为库

在您的代码中使用IMEx包主要为您提供了访问一些新函数的机会,这些函数可以对迭代器进行合并并返回迭代器。这些函数都可以在典型的迭代器处理链中使用。有关使用和实现的详细信息,请参阅包的文档

计划中的功能

为imex计划了一个主要功能

  • CLI中可选的交互模式,用于实时编辑IMEx并查看结果,同时预览正在合并的文件的下一行。

许可证

根据您的选择,受Apache许可证第2版MIT许可证的许可。

依赖项

约1.5MB
约24K SLoC