使用过滤选项在两行之间输出文本

Output Text between 2 lines using filtering option

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

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

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

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

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

我怎样才能做到这一点?

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

更新

下载 EmEditor v20.0.902 或更高版本,并使用 Advanced 中的 Begin FilterEnd Filter 选项过滤器

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

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

打开数据文件后,您可以运行这个宏。为此,请将此代码保存为 Filter.jsee,然后 select 来自 Select... 的此文件 菜单。最后,打开您的数据文件,并在您的数据文件处于活动状态时,在 Macros 菜单中 select 运行

这是否必须通过过滤器完成?使用标准 Find 方法不能 isolate/select 仅 table 数据吗?例如Ctrl-F。单击“高级”并确保选择 “正则表达式”. 可以匹配换行符。将 Additional lines to Search for RegEx 设置为一个数字高于您预期的最大 table.

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

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

单击“Select 全部”,这应该有望只捕获 tables,您现在可以用它做任何您想做的事情(单击提取按钮、复制、剪切等) .