Chinaunix
标题:
文件合并问题!
[打印本页]
作者:
月光宝盒
时间:
2003-03-12 11:22
标题:
文件合并问题!
文件file1:
103 16
104 8
文件file2:
103 38
104 35
606 2154
682 199
需合并为:
103 16 38
104 8 35
606 2154
682 199
应该如可写?
作者:
eliumao
时间:
2003-03-12 11:44
标题:
文件合并问题!
用perl比较方便
-----------------------------------------------------
#!/usr/bin/perl -w
use strict;
open File1,"<file1";
open File2,"<file2";
my %FILE1;
my %FILE2;
while(<File1>
{
chomp;
my @temp=split;
$FILE1{$temp[0]}=$temp[1];
}
while(<File2>
{
chomp;
my @temp=split;
$FILE2{$temp[0]}=$temp[1];
}
foreach(sort keys %FILE2){
print $_." ";
print $FILE1{$_}." " if ($FILE1{$_});
print $FILE2{$_}."\n";
}
---------------------------------------------------
作者:
月光宝盒
时间:
2003-03-12 11:59
标题:
文件合并问题!
多谢了!
作者:
bzzyg
时间:
2003-03-13 15:10
标题:
文件合并问题!
哪位高手用awk语句写一下?
作者:
冷风
时间:
2003-03-13 15:29
标题:
文件合并问题!
偶也想知道
偶还想知道哪里可以买到权威的awk权威指南
作者:
swysn
时间:
2003-03-13 16:09
标题:
文件合并问题!
其实有更简单的办法:
join -a1 file1 file2 > newfile
join -v1 file2 file1 >> newfile
作者:
swysn
时间:
2003-03-13 16:10
标题:
文件合并问题!
其实有更简单的办法:
join -a1 file2 file1 > newfile
作者:
miling
时间:
2003-03-13 16:49
标题:
文件合并问题!
先将两文件合并:
cat file1 file2 >file3
然后用awk会好用些:
awk '{
????if($1 in aa)
??????for(i=2;i<=NF;i++)
????????aa[$1]=sprintf("%s %s",aa[$1],$i);
????else
??????for(i=2;i<=NF;i++) aa[$1]=sprintf("%s",$i);
??}
?END?{for(i in aa) print i, aa
}' file3
在FreeBSD4.7下测试通过。
上面代码只是为了更好看清楚,命令行如下:
awk '{if($1 in aa)for(i=2;i<=NF;i++) aa[$1]=sprintf("%s %s",aa[$1],$i);else for(i=2;i<=NF;i++) aa[$1]=sprintf("%s",$i);}END{for(i in aa) print i, aa
}' file3
作者:
红袖添香
时间:
2003-03-13 21:37
标题:
文件合并问题!
[quote]
原帖由 "eliumao"]用perl比较方便[/quote 发表:
perl 高手啊,而且喜歡這句口頭禪~~ :)
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2