是否有一种有效的方法可以从另一个文本文件或管道输出中搜索字符串列表?
我尝试过以下方法:
FINDSTR /G:patternlist.txt <filetocheck>
or
Some program whose output is piped to FINDSTR
SOMEPROGRAM | FINDSTR /G:patternlist.txt
同样,尝试过来自MSYS,UnixUtils,GNU包等的GREP,
GREP -w -F -f patternlist.txt <filetocheck>
or
Some program whose output is piped to GREP
SOMEPROGRAM | GREP -w -F -f patternlist.txt
例如,Pattern List文件是一个文本文件,每行包含一个文字字符串。
例如
Patternlist.txt
65sM547P
Bu83842T
t400N897
s20I9U10
i1786H6S
Qj04404e
tTV89965
etc.,
file_to_be_checked包含类似的文本,但在某些情况下,单行中可能会有多个单词。
例如
Filetocheck.txt
3Lo76SZ4 CjBS8WeS
iI9NvIDC
TIS0jFUI w6SbUuJq joN2TOVZ
Ee3z83an rpAb8rWp
Rmd6vBcg
O2UYJOos
hKjL91CB
Dq0tpL5R R04hKmeI W9Gs34AU
etc.,
如果模式文字的数量小于50000,并且某些时候工作速度非常慢,则可以按预期工作。
此外,filetocheck.txt将包含最多250000行,并且最大长度可达30 MB。
当模式文件变得比这大时,问题就出现了。我有一个模式文件的实例,大约20 MB,包含600000个字符串文字。
将此与250000到300000行文本的列表或输出相匹配会使处理器停滞不前。
我尝试了 SIFT和其他多种文本搜索工具,但它们只会因内存要求和处理器使用情况而终止系统,并使系统无响应。
我需要一个基于命令行的解决方案或实用程序来帮助完成此任务,因为这是另一个大脚本的一部分。
我已经尝试了多种程序和方法来加速,但是像索引模式文件,按字母顺序对文件进行排序等等都是徒劳的。
由于输入来自程序,因此也无法分割输入文件。这是一个大管道命令。
示例:
PASSWORDGEN | <COMMAND_TO_FILTER_KNOWN_PASSWORDS> >> FILTERED_OUTPUT
上述问题出现在 部分,系统挂起或花费很长时间来过滤stdout流或从保存的结果文件中过滤。
系统配置详细信息,如果这将是任何帮助: 我在适当的8 GB RAM,SATA HDD,Core i7和Win 7 64bit上运行它,目前我没有更好的配置。
非常感谢您对此问题的任何帮助。
我也试图找到一个解决方案,如果没有创建一个特定的代码来实现这一点(在这个意义上也有帮助。)