- 论坛徽章:
- 0
|
有4个文件,每个都有15万行左右。每行长度在120个字母左右,要求找出4个文件中都出现过的行,打印出来。
每个文件中不会有重复的行。
下面是我的脚本,发现运行起来非常慢,每100行大约要4~5秒,到10万行时,每100行大约要执行10多秒。
想请位各位高手,有没有快速的方法?非常感谢~~- use warnings;
- use strict;
- open my $f0, "<", "changes.tcl.core0" or die;
- open my $fo, ">", "changes.tcl.same" or die;
- `rm changes.tcl.same` if (-e "changes.tcl.same");
- my $cnt = 0;
- while ( <$f0> ) {
- chomp;
- my @a = `grep '$_' changes.tcl.core* -l`;
- print $fo "$_\n" if @a==4;
- print "cnt=$cnt\n" unless $cnt % 100;
- $cnt = $cnt + 1;
- }
- print "Done!\n";
复制代码 |
|