2009年5月8日星期五

[PerlChina] Re: 请教合并一文件中域1相同的记录,域2进行累加

先说一句,我不是来砸场子的^_^因为只会awk


cat 20090508data
1|2
1|3
2|3
3|3
4|3
4|4
1000000|1

cat analysis20090508data
#!/bin/awk -f
#Fri May 8 18:32:59 CST 2009

BEGIN {
FS="|"
}

{
array1[$1]+=$2
}
END {
# n=asort(array1,dest)
print n"\n"
for(i in array1)
{
print i":"array1[i]
}
#print array1[1]
}

使用:
awk -f analysis20090508data 20090508data|sort -t: -k1n

结果:

1:5
2:3
3:3
4:7
1000000:1


2009/5/8 ☼ 林永忠 ☼ (Yung-chung Lin) <henearkrxern@gmail.com>:
> 可以這樣寫
>
> use Data::Dumper;
>
> my %hash;
>
> while (my $line = <STDIN>) {
>     my ($a, $b) = split /\|/, $line;
>     $hash{$a} += $b;
> }
>
> print Dumper \%hash;
>
>
> 請參考
>
> Best,
> Yung-chung Lin
>
> 2009/5/8 Gene <netgene@hotmail.com>
>>
>> 怎样做效率高?
>> 若域1相同的则进行合并,如下1|2和1|3合并成1|5:
>> 1|2
>> 1|3
>> 2|3
>> 3|3
>> 4|3
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: