- 论坛徽章:
- 0
|
原帖由 mayong801030 于 2006-2-25 16:04 发表
有两个文件A,B。两个文件中都有两列 id ,name
A文件
abc 123
vff 456
B文件
abc 789
poi 100
如果B文件中的id列在A文件中有就生成一个新文件在id,name列,后面再追加一列之值为C ...
产生的新文件c的内容,到底是以a为准还是以b为准呢?偶听你的意思是前2种以b为准,第3种以a为准。
这个用shell也可以写,但偶想用perl似乎更简单些?随手写一个仅供参考:
- #!/usr/bin/perl
- use strict;
- my (%hashA,%hashB);
- open (A,"a") or die $!;
- $hashA{(split)[0]} = $_ while(<A>);
- close A;
- open (B,"b") or die $!;
- $hashB{(split)[0]} = $_ while(<B>);
- close B;
- open (C,">>","c") or die $!;
- for (keys %hashB){
- if ($hashA{$_}){
- chomp $hashB{$_};
- print C "$hashB{$_} C\n";
- }else{
- chomp $hashB{$_};
- print C "$hashB{$_} A\n";
- }
- }
- for (keys %hashA){
- unless ($hashB{$_}){
- chomp $hashA{$_};
- print C "$hashA{$_} D\n";
- }
- }
- close C;
复制代码 |
|