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



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

我的尝试会超过正则表达式,我会在UltraEdit中找到和替换。UltraEdit 中的正则表达式会是什么样子?

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

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

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

?与换行符不匹配。因此,一行必须包含两次string,除换行符外的其他字符之间。

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

.不匹配换行符(默认情况下(。因此,一行必须包含两次string,中间必须包含除换行符以外的其他字符。

使用Perl,如果正匹配要求string是一个完整的单词,例如包含strings or substring的行,也可以使用bstringb.+bstringb

生成正匹配的行可以写入"查找字符串列表"窗口,并带有查找选项列表 列出包含字符串的行,并通过上下文菜单从此窗口复制到新文件中。

也可以使用查找选项"筛选选中显示的行",以仅显示至少两次包含string的行。

此外,根据高级 - 设置或配置 -搜索 - 设置中定义的配置,可以执行带有选项"打开文件"和"选中要编辑的结果"窗口的"在文件中查找",以将找到的行放入新文件中,而无需或包含其他信息。当然,也可以在没有选项的情况下运行相同的">在文件中查找"结果编辑窗口,以将找到的行写入活动输出窗口选项卡。

并且有记录的UltraEdit脚本 查找带有正则表达式的字符串,并将它们输出到新文件,以便使用正则表达式从活动文件字符串到新文件中的grep。

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

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

如果是 Windows,请使用findstr .*STRING.*STRING.* myfile.file > output.file。相同的结果,检查包含两个(或更多(STRING出现的完整行的output.file

最新更新