结果来自';findstr/G:&x27;与'相比,不完整;grep-f';

结果来自';findstr/G:&x27;与'相比,不完整;grep-f';,grep,findstr,Grep,Findstr,我必须在名为(database.txt,多列)的数据库文件中查找数千个基因名称的列表(genelist.txt,一列)。任何包含至少一个与genelist.txt匹配的基因名的行都将被提取到output.txt 我以前是这样做的: findstr /G:genelist.txt database.txt >output.txt 它工作得又好又快。然而,我今天才发现最终的输出受原始genelist.txt中基因顺序的影响。如果使用未排序的基因列表,则会出现一个结果;如果对基因列表进行排序并

我必须在名为(
database.txt
,多列)的数据库文件中查找数千个基因名称的列表(
genelist.txt,一列)。任何包含至少一个与
genelist.txt
匹配的基因名的行都将被提取到
output.txt

我以前是这样做的:

findstr /G:genelist.txt database.txt >output.txt
它工作得又好又快。然而,我今天才发现最终的输出受原始
genelist.txt
中基因顺序的影响。如果使用未排序的基因列表,则会出现一个结果;如果对基因列表进行排序并再次搜索,则会出现另一个结果,其中包含更多行。但是,即使使用排序后的基因列表,文件
output.txt
仍然不包含所有行,因为我丢失了一些记录。我刚刚注意到这一点,在与

grep -f "genelist.txt" database.txt > output.txt
无论基因列表排序与否,grep的结果都没有差异,但比findstr慢一点


我想知道这是怎么回事。我可以向findstr添加任何参数以使其返回完整的结果列表吗?

Related:by@dbenham。是否可以创建一个?也就是说,如果database.txt只包含几行(其中一行是findstr遗漏的有问题的行),您能否重现该问题?非常感谢您的帖子,似乎win findstr函数中存在一些内置bug@JosefZI已经尝试过了,找到了findstr遗漏的行,然后只使用该行中的基因名称再次搜索,效果很好,但在一个长列表中,它漏掉了一些行。缺失的基因名称没有清晰的模式,所以我猜这可能是Findstr中的某种记忆错误,从JosefZ的回答来看,Findstr中确实发生了一些奇怪的事情@海因茨