1

我们正在使用 EMEditor 在巨大的文本文件中进行日志文件分析。我们有以下要求。
在日志文件中,有很多这种格式的表:

+----------------------+
|Column1|Column2|Colum3|
+-------+-------+------+
|Data1  |Data2  |Data3 |
|Data4  |Data5  |Data6 |
+-------+-------+------+
| Number of Records: 2 |
+----------------------+

页眉和页脚之间的文字非常动态;它之间可能是 0 或 x 线。

我会以这种方式使用过滤器选项,例如|Column1使用开始过滤器和| Number of Records:作为结束过滤器输入。EMEditor 应该过滤开始和结束过滤器之间的所有记录(包含找到的过滤器模式的行)。

我已经看到,目前只能在过滤器模式的上方和下方输出行,但这不是可行的方法。

我怎样才能做到这一点?

4

2 回答 2

0

如果+|字符仅用于表格,您可以按这些字符过滤表格。为此,您可以单击“过滤器”工具栏中的“高级过滤器按钮,单击“添加”按钮并输入+,再次单击“添加|”按钮输入,然后将“逻辑析取(OR)到先前条件”选项设置为列表中的第二项。最后,单击过滤器按钮。

更新

下载 EmEditor v20.0.902 或更高版本,并使用高级过滤器中的开始过滤器结束过滤器选项。 高级过滤器

如果您想使用宏,这是一个适合您的宏:

filters = document.filters;
filters.Clear();
filters.AddFind( "|Column1", eeFindReplaceCase, eeExFilterBegin );
filters.AddFind( "| Number of Records:", eeFindReplaceCase, eeExFilterEnd );
document.filters = filters;

您可以在打开数据文件后运行此宏。为此,请将此代码另存为,例如,Filter.jsee然后从菜单中的选择...中选择此文件。最后,打开您的数据文件,并在数据文件处于活动状态时选择菜单中的运行。

于 2020-08-04T17:01:41.577 回答
0

这必须通过过滤器完成吗?是否不能使用标准的 Find 方法来隔离/选择表数据?例如 Ctrl-F。单击“高级”并确保选择“正则表达式”。可以匹配换行符。将“搜索正则表达式的附加行”设置为比您期望的最大表更高的数字。

单击确定,然后单击查找(选择正则表达式):

(?<=^\+----------\+.)\|.+?(\| 记录数[^\|]+ \|)

单击“全选”,这有望只捕获表格,您现在可以使用它做您想做的事情(单击“提取”按钮、复制、剪切等)。

于 2020-08-04T21:43:00.887 回答