免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1582 | 回复: 8
打印 上一主题 下一主题

文件合并问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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
应该如可写?

论坛徽章:
0
2 [报告]
发表于 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";
}
---------------------------------------------------

论坛徽章:
0
3 [报告]
发表于 2003-03-12 11:59 |只看该作者

文件合并问题!

多谢了!

论坛徽章:
0
4 [报告]
发表于 2003-03-13 15:10 |只看该作者

文件合并问题!

哪位高手用awk语句写一下?

论坛徽章:
0
5 [报告]
发表于 2003-03-13 15:29 |只看该作者

文件合并问题!

偶也想知道
偶还想知道哪里可以买到权威的awk权威指南

论坛徽章:
0
6 [报告]
发表于 2003-03-13 16:09 |只看该作者

文件合并问题!

其实有更简单的办法:
join -a1 file1 file2 > newfile
join -v1 file2 file1 >> newfile

论坛徽章:
0
7 [报告]
发表于 2003-03-13 16:10 |只看该作者

文件合并问题!

其实有更简单的办法:
join -a1 file2  file1 > newfile

论坛徽章:
0
8 [报告]
发表于 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

论坛徽章:
0
9 [报告]
发表于 2003-03-13 21:37 |只看该作者

文件合并问题!

[quote]原帖由 "eliumao"]用perl比较方便[/quote 发表:


perl 高手啊,而且喜歡這句口頭禪~~  :)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP