#regex #stream #command-line-tool #regular #expression #tags #columns

程序 unweave

一个使用正则表达式匹配来解交织文本行流线的命令行工具

1 个稳定版本

1.0.0 2022年12月3日

#2034命令行工具

GPL-3.0-or-later

77KB
1.5K SLoC

unweave

unweave 是一个命令行工具,用于将交织的文本行流线分离成每个流线的列或文件。每行根据使用正则表达式模式提取的流标签进行分类。

文档

有关 unweave 工具的功能和选项的详细信息,可以在以下 man 页面中找到:

doc/unweave.1.md

用法

使用

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 或更高版本许可(LICENSEhttps://gnu.org/licenses/gpl.html)。

依赖关系

~4-6MB
~86K SLoC