如何从一个字符串多次出现的文本文件中提取行?

How to extract lines from a text file, where a string appears several times?

我有一个包含多行的文本文件。在每一行中,某个字符串出现一次或多次。我想提取字符串出现不止一次的所有行,并将这些行写入一个单独的文本文件。

我的尝试是遍历正则表达式,我会在 UltraEdit 中查找和替换。 UltraEdit 中的 RegEx 会是什么样子?

我不确定 UltraEdit,但这很容易 grep-able。 grep .*STRING.*STRING.* myfile.file > output.file

这将搜索 myfile.file 任何出现两次 STRING 的行并将其输出到文件 output.file.

如果 Windows,则使用 findstr .*STRING.*STRING.* myfile.file > output.file。同样的结果,检查 output.file 以查找包含两次(或多次)出现的 STRING 的完整行。

自 v12.00 以来,Windows 的 UltraEdit 中提供了 3 个正则表达式引擎。

使用这三个表达式中的任何一个,正则表达式都很简单。

UltraEdit 正则表达式搜索字符串:string?+string

? 不匹配换行符。所以一行必须包含两次 string 和除换行符之外的其他字符。

UnixPerl 正则表达式搜索字符串:string.+string

. 不匹配换行符(默认)。所以一行必须包含两次 string 和除换行符之外的其他字符。

使用 Perl 也可以使用 \bstring\b.+\bstring\b 如果正匹配需要 string 是一个完整的单词,例如排除包含的行strings or substring.

可以将产生肯定匹配的行写入 查找字符串列表 window 使用查找选项 包含字符串的列表行检查并通过上下文菜单从此 window 复制到新文件中。

也可以使用查找选项 过滤行 并选择 显示 以仅显示包含 string 的行至少两次。

进一步选择在文件中查找,选择选项打开文件,并选择选项要编辑的结果window 可以根据 Advanced - SettingsConfiguration - 中定义的配置执行检查,将找到的行放入新文件中,不带或带附加信息搜索 - 设置查找输出格式。当然也可以 运行 相同 在文件中查找 不带选项 结果编辑 window 检查得到找到写入活动输出 window 选项卡的行。

Find strings with a regular expression and output them to new file 中记录了 UltraEdit 脚本,可使用正则表达式从活动文件字符串中 grep 到新文件中。