用perl比较两个大文件 30
两个文件A和B,都是非常非常大的文件,遍历一遍就需要很长时间。A文件:aaabbbcccddd....B文件:aaabbbccxddd....如何分别找出A中有B中没有和...
两个文件A和B, 都是非常非常大的文件,遍历一遍就需要很长时间。
A文件:
aaa
bbb
ccc
ddd
....
B文件:
aaa
bbb
ccx
ddd
....
如何分别找出A中有B中没有和A中没有B中有的行。
貌似用hash的话,两个文件各遍历一遍就可以,求指教具体应该怎么做。
能给出大概的code吗? 先在这里谢谢了。 展开
A文件:
aaa
bbb
ccc
ddd
....
B文件:
aaa
bbb
ccx
ddd
....
如何分别找出A中有B中没有和A中没有B中有的行。
貌似用hash的话,两个文件各遍历一遍就可以,求指教具体应该怎么做。
能给出大概的code吗? 先在这里谢谢了。 展开
展开全部
open A, "A.txt" or die "Can't open A";
my @data = <A>;
close A;
my %hash;
++$hash{$_} foreach @data;
open B, "B.txt" or die "Can't open B";
open C, ">A无B有.txt" or die "Can't open Output A无B有";# 请改成英文档名
while ( <B> ) {
if ( $hash{$_} ) { delete $hash{$_}; next } ; # AB 都有, 拿掉
print C $_; # A无B有
delete $hash{$_} ; # 最後剩下来的就是 A 有 B 无
}
close C; close B;
open D, ">A有B无.txt" or die "Can't open Output A有B无"; # 请改成英文档名
print D $_ while ( sort keys %hash ) ;
close D;
ps. "非常非常大" 是没有意义的描述, 有多大最好直接说有几个 GB.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询