使用过滤选项在两行之间输出文本
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 Filter 和 End 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,您现在可以用它做任何您想做的事情(单击提取按钮、复制、剪切等) .
我们使用 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 Filter 和 End 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,您现在可以用它做任何您想做的事情(单击提取按钮、复制、剪切等) .