用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吗? 先在这里谢谢了。
展开
 我来答
百度网友c9e795dda
2015-05-04 · TA获得超过5167个赞
知道大有可为答主
回答量:1128
采纳率:0%
帮助的人:1151万
展开全部
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.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式