请教两个文件处理列的问题

请教两个文件处理列的问题

第一个文件1.txt
编号姓名 帐号          金额   种类 号码
001,张三,101000101,0.00,101,11111111111,
002,李四,101000102,0.00,101,22222222222,
第二个文件2.txt
编号姓名 金额
001,张三,100,
002,张三,200,
003,李四,300,
004,王五,500,

要得到的输出结果3.txt
编号 姓名 帐号          金额   种类 号码
001,张三,101000101,100,101,11111111111,
002,张三,               , 200,101,                  ,
003,李四,               ,300,101,                   ,
004,王五,                 ,500,101,                  ,

就是如果第二个文件中的编号和姓名都和第一个文件一样的话就把第二个的金额覆盖第一个文件中的金额,
如果没有格式就如:002,张三,        ,200,101,       ,
对不起,是我一时没有注意哦.......应该是现在这个样子才对哦,谢谢高手指点哦!

      
好像用shell处理很麻烦。。。(也许awk很方便?)
可不可以用Perl。。。      
高手用awk处理下吧,谢谢      
第二个文件中的 编号和姓名 都和第一个文件一样的话 ,就应该没有这行啊
003,李四,101000102,300,101,22222222222

只能猜一下了
复制内容到剪贴板
代码:
$ awk 'BEGIN{OFS=FS=","}NR==FNR{hash[$1","$2]=$3}NR>FNR{if(hash[$1","$2]){$4=hash[$1","$2];print;delete hash[$1","$2]}else{for(i in hash){if(hash[i]){print i,"         ",hash[i],$5","}}}}' 2.txt 1.txt
001,张三,101000101,100,101,11111111111,
002,张三,         ,200,101,
004,王五,         ,500,101,
003,李四,         ,300,101,
      
仔细分析了一下
给出的示例和结果
与描述的不太相符

002,李四,101000102,0.00,101,22222222222,
003,李四,300,
以上两行合并成了
003,李四,101000102,300,101,22222222222
???      
第二个文件中的 编号和姓名 都和第一个文件一样的话 ,就应该没有这行啊
003,李四,101000102,300,101,22222222222

只能猜一下了

[Copy to clipboard] [ - ]CODE:
$ awk 'BEGIN{OFS=FS=","}NR==FNR{hash[$1","$2]=$3}NR>FNR{if(hash[$1","$2]){$4=hash[$1","$2];print;delete hash[$1","$2]}else{for(i in hash){if(hash){print i,"         ",hash,$5","}}}}' 2.txt 1.txt
001,张三,101000101,100,101,11111111111,
002,张三,         ,200,101,
004,王五,         ,500,101,
003,李四,         ,300,101,

高手好象还有点问题哦,如果把文件1.txt 改为:
001,张三,101000101,0.00,101,11111111111,
002,李四,101000102,0.00,101,22222222222,
003,李四,101000103,0.00,101,33333333333,
运行结果就会出问题,请高手指点下.      
呵呵 当时写的欠考虑
复制内容到剪贴板
代码:
$ cat 1.txt
001,张三,101000101,0.00,101,11111111111,
002,李四,101000102,0.00,101,22222222222,
003,李四,101000103,0.00,101,33333333333,

davistar ~/shell/pdir
$ cat 2.txt
001,张三,100,
002,张三,200,
003,李四,300,
004,王五,500,

davistar ~/shell/pdir
$ ./t.awk 2.txt 1.txt
001,张三,101000101,100,101,11111111111,
003,李四,101000103,300,101,33333333333,
002,张三,         ,200,101,
004,王五,         ,500,101,

davistar ~/shell/pdir
$ cat ./t.awk
#!/usr/bin/awk -f
BEGIN{
OFS=FS=","
}
NR==FNR{
hash[$1","$2]=$3
}
NR>FNR{
     if(hash[$1","$2]){
        $4=hash[$1","$2]
        print
        delete hash[$1","$2]}
     }
END{
   for(i in hash){
      if(hash[i]){
         print i,"         ",hash[i],$5","
      }
    }

   }
btw:我把中文的表头去掉了。输出格式楼主自己修改一下吧      
楼上的学了一招      
不错!不错!有学到新的技巧!