1 个稳定版本
1.0.0 | 2022年12月3日 |
---|
#2034 在 命令行工具
77KB
1.5K SLoC
unweave
unweave 是一个命令行工具,用于将交织的文本行流线分离成每个流线的列或文件。每行根据使用正则表达式模式提取的流标签进行分类。
文档
有关 unweave 工具的功能和选项的详细信息,可以在以下 man 页面中找到:
用法
使用
cargobuild --release
要在构建目录内运行,请使用以下任一命令:
cargorun --release -- [OPTIONS...]PATTERN[FILE...]
或直接使用
target/release/unweave[OPTIONS]... PATTERN [FILE]...
要使用 manpage 和构建系统安装,请使用
meson
简介
考虑包含来自三个流(标记为 A、B 和 C)的行的输入文件
[info] A: 1
[info] A: 2
[info] B: 1
[error] A: 3
[info] B: 2
[error] C: 1
使用正则表达式模式将 A、B 和 C 交织成列
$ unweave 'A|B|C' input
[info] A: 1
[info] A: 2
[info] B: 1
[error] A: 3
[info] B: 2
[error] C: 1
可以设置每列的宽度和列分隔符
$ unweave -c 15 -s '|' 'A|B|C' input
[info] A: 1 | |
[info] A: 2 | |
|[info] B: 1 |
[error] A: 3 | |
|[info] B: 2 |
| |[error] C: 1
对于更复杂的情况,可以使用正则表达式的第一个捕获组来获取流标签
$ unweave -l 45 '] ([A-Z]): \d' input
[info] A: 1
[info] A: 2
[info] B: 1
[error] A: 3
[info] B: 2
[error] C: 1
可以将结果解交织成单独的文件,每个输出文件包含具有相应流标签和流 ID 的数据
$ unweave --mode=files -o 'stream-%t-%2d' 'A|B|C' input
$ tail -n +1 stream-*
==> stream-A-00 <==
[info] A: 1
[info] A: 2
[error] A: 3
==> stream-B-01 <==
[info] B: 1
[info] B: 2
==> stream-C-02 <==
[error] C: 1
许可
本项目根据 GNU 通用公共许可证 Version 3.0 或更高版本许可(LICENSE 或 https://gnu.org/licenses/gpl.html)。
依赖关系
~4-6MB
~86K SLoC