3个不稳定版本
0.2.1 | 2020年9月29日 |
---|---|
0.2.0 | 2020年9月21日 |
0.1.0 | 2020年8月10日 |
#120 in #merge
38KB
773 行
IMEx
一个库/命令行工具,用于将多个迭代器/文件合并为一个,可选使用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