请教:用perl如何合并文件

请教:用perl如何合并文件

现有两个文件a.txt, b.txt ,请问如何合并这两个文件,并将其放置在一个新的文件c.txt中?
非常感谢了,小弟刚接触perl,很多东西都不明白。
a.txt文本内容如下
ID      name
1         aa
2         bb
3         cc

b.txt的内容:
ID      name
1         aa
2         bb
3         cc
4         dd
5         ee
一定要用perl吗?
linux下:   cat a.txt b.txt > c.txt
windows下:  copy a.txt+b.txt c.txt

一定要用perl的话。。。

[Copy to clipboard] [ - ]
CODE:
print while(<>);

然后  perl aaa.pl a.txt b.txt > c.txt

莫非……你说的合并是要把重复内容只取一个?
那倒也不难

[Copy to clipboard] [ - ]
CODE:
%b;
while(<>) {
  @a = split /\s+/;
  $b{$a[0]} = $a[1];
}
foreach (sort keys %b) {
  print $_ . '      ' . $b{$_} . "\n";
}



QUOTE:
原帖由 odacharlee 于 2008-11-5 09:34 发表
一定要用perl吗?
linux下:   cat a.txt b.txt > c.txt
windows下:  copy a.txt+b.txt c.txt

一定要用perl的话。。。

print while();

然后  perl aaa.pl a.txt b.txt > c.txt

莫非……你说的合 ...

最后一段考虑不周全,key是一样的,但value不一样会被你错误合并,最后只剩下那个第二个文件了!
yes,故意的
lz又没说合并的要求是什么
谢谢楼上各位热心的解答,我可能没说清楚,a.txt的内容为
ID  Name
1    aaa
2    bbb
3    ccc
b.txt的内容为:
ID  Name
2  bbb
3  ccc
4  ddd
5  eee
6  fff
合并的结果就是生成1个新的c.txt,它的内容为
ID  Name
1  aaa
2  bbb
3  ccc
4  ddd
5  eee
6  fff
也就是要合并a.txt和b.txt相同的部分


QUOTE:
原帖由 davesliu 于 2008-11-5 11:28 发表
谢谢楼上各位热心的解答,我可能没说清楚,a.txt的内容为
ID  Name
1    aaa
2    bbb
3    ccc
b.txt的内容为:
ID  Name
2  bbb
3  ccc
4  ddd
5  eee
6  fff
合并的结果就是生成1个新 ...

perl -ne 'print if !$h{$_}++' a.txt b.txt > c.txt


QUOTE:
原帖由 ly5066113 于 2008-11-5 12:15 发表


perl -ne 'print if !$h{$_}++' a.txt b.txt > c.txt

这样做生成的文件如下:
ID  name
2   bbb
3   ccc
4   ddd
ID  name
1   aaa

应该没有第2个“ID  name ”,怎样才能去掉这个重复的“ID  name“呢?
拜托楼主自己考虑考虑吧。这几段程序足够你举一反三的了
呵呵,2楼的解答LZ你可以认真看下。