我有两个电子邮件列表。 一个是包含10万行的电子邮件地址的换行符分隔文件,第二个文件包含电子邮件,date,ipaddress换行符。 它有4M行,并包含我不关心的重复。
grep -f fileA.txt fileB.txt在fileA.txt是100或1000行的testing文件但是100k时没有任何地方。
我打开perl以及:)
当面对这样的事情时,我不能像埃里克所说的那样把所有的文件都存储在一个数组中,我采取了一个非常规的方法。 每个文件都被导出到数据库中的一个单独的表(我喜欢这个部分的Perl),并通过SQL查询获得所需的结果。
您可以通过使用-F选项来加快速度,以便search固定string。
grep -Ff fileA.txt fileB.txt
你有没有时间testing? 什么时间推断大文件告诉你?
sorting,然后比较他们? 这应该工作。
我正在假设Linux。 我会尝试创build一个虚拟磁盘 ,并将其中的两个文件。 这可能是最快的尝试。 把它放在fstab中,然后做一个mount / mnt来设置它:
ramdisk /mnt tmpfs mode=1777,size=1G
在perl中:
#!/usr/bin/perl -w my ($emailfile, $file2); if ( open ( $emailfile, '/path/file') ) { my @emails = split(/\n/, $emailfile); if ( open ( $file1, '/path/file') ) { foreach my $email ( @emails ) { while ( <$file2> ) { if ( $_ =~ /$email/) print $_; } } } }