perl 对2个txt文件内容进行按ID关联操作生成新的txt文件 10
求个perl的案例,每个文件的数据量上千万,最后考虑到linux服务器处理时占用内存情况,谢谢~a.txt内容:idnameageaddress1李林18北京2张三22天...
求个perl的案例,每个文件的数据量上千万,最后考虑到linux服务器处理时占用内存情况,谢谢~
a.txt内容:
id name age address
1 李林 18 北京
2 张三 22 天津
3 王五 32 上海
b.txt内容:
sex id phone
男 1 13024
女 3 15678
男 5 1678
c.txt生成后的文件内容:
id name address sex phone
1 李林 北京 男 13024
3 王五 上海 男 1678
最后成生的文件是这个,上面少了个sex列:
c.txt生成后的文件内容:
id name address sex phone
1 李林 北京 男 18 13024
3 王五 上海 男 32 1678 展开
a.txt内容:
id name age address
1 李林 18 北京
2 张三 22 天津
3 王五 32 上海
b.txt内容:
sex id phone
男 1 13024
女 3 15678
男 5 1678
c.txt生成后的文件内容:
id name address sex phone
1 李林 北京 男 13024
3 王五 上海 男 1678
最后成生的文件是这个,上面少了个sex列:
c.txt生成后的文件内容:
id name address sex phone
1 李林 北京 男 18 13024
3 王五 上海 男 32 1678 展开
1个回答
展开全部
程序代码: my(%d1,%d2,$str,$key,$val);my($id,$a,$b,$c,$d,$e,$f,$g);#读取文件1open(FD,'1');while(){ chomp; ($id,$a,$b,$c,$d)=split(/\s+/); $d1{$id}="$a\t$b\t$c\t$d";}close(FD);#读取文件2open(FD,'2');while(){ chomp; ($id,$e,$f,$g)=split(/\s+/); $d2{$id}="$e\t$f\t$g";}close(FD);#生成文件3open(FD,'>3');foreach $id (keys %d1){ print FD "$id\t".$d1{$id}."\t".(exists($d2{$id})?$d2{$id}:"NA\tNA\tNA")."\n"; delete($d2{$id}) if (exists($d2{$id}));}foreach $id (keys %d2){ print FD "$id\t".(exists($d1{$id})?$d1{$id}:"NA\tNA\tNA")."\t".$d2{$id}."\n";}close(FD); 运行拷屏:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询