免费注册 查看新帖 |

Chinaunix

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

请大家帮忙看看这个脚本错在哪里,感谢~[已解决] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-12 08:48 |只看该作者 |倒序浏览
小弟是初学者,请大家帮忙看看错在哪里,脚本实现统计第一个字段id的总行数.

#!/usr/bin/perl  -w


my %count;
while(<DATA>){
    my($id,$count) = split(/,/,$_);
    $count{$id}++;
}

foreach $id(keys %count){
    print "$id,$count{id}\n";
}


__END__
A,xxxxxxxxxxxx
B,ddffffffffff
C,dddddddddddddd
A,dddddddddd
C,ddddddddddddd
A,ddddddddddddddd
D,ddddddddddddd
B,ddddddddddddddd
B,ddddddddddddddd
C,dddddddddddddddd
A,ddddddddddddddddd
D,ddddddddddddddd


运行之后有第一个id,但没有统计数字

[ 本帖最后由 chenxkg 于 2008-10-13 17:44 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-10-12 09:21 |只看该作者
#!/usr/bin/perl
my %count;
while(<>){
chomp;
my($id,$count)=split(/,/,$_);
$count{$id}++;
}
foreach $id(keys %count){
        print "$id,$count{$id}\n";
        }

数据文件为data
perl count data
输出
A,4
D,2
C,3
B,3

论坛徽章:
0
3 [报告]
发表于 2008-10-12 18:46 |只看该作者
感谢楼上的兄弟,我粗心到少打了一个$,真是惭愧~

我把上面的范例复杂化了一下

__END__
A,xxxxxxxxxxxx,1
B,ddffffffffff,2
C,dddddddddddddd,1
A,dddddddddd,1
B,ddddddddddddd,2
C,ddddddddddddddd,3
A,ddddddddddddd,2
B,ddddddddddddddd,2
B,ddddddddddddddd,1

第3个字段标识第一个字段的某个属性,现在的需求是,统计项目A中所有属性所出现的次数,输出类似于这样的结果:
A,1,2
A,2,1
B,2,3
B,1,1
C,1,1
C,3,1

我暂时没有思路,能否有兄弟指教一下

论坛徽章:
0
4 [报告]
发表于 2008-10-13 04:16 |只看该作者

简单啊

#!/usr/bin/perl  -w
use strict;

my %count;

while (<DATA>) {
        chomp;
        my ($a, $b, $c) = split ',', $_;
        $count{$a} = {};
        ${$count{$a}}{$c}++;
}

for my $a (keys %count) {
        for my $c (keys %{$count{$a}}) {
                print "$a $c ${$count{$a}}{$c}\n";
        }
}

__END__
A,xxxxxxxxxxxx,1
B,ddffffffffff,2
C,dddddddddddddd,1
A,dddddddddd,1
B,ddddddddddddd,2
C,ddddddddddddddd,3
A,ddddddddddddd,2
B,ddddddddddddddd,2
B,ddddddddddddddd,1

[ 本帖最后由 ralphwen 于 2008-10-13 04:40 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-10-13 08:02 |只看该作者
#!/usr/bin/perl
my %count;
while(<>){
chomp;
my($id,$attr)=(split /,/)[0,2]
$count{$id}{$attr}++;
}
for my $id (sort keys %count){
   for my $attr (sort keys %{$count{$id}}){
       print "$id,$attr,$count{$id}{$attr}.
}
A,1,2.
A,2,1.
B,1,1.
B,2,3.
C,1,1.
C,3,1.

论坛徽章:
0
6 [报告]
发表于 2008-10-13 09:22 |只看该作者
  感谢楼上2位
bty:两位都很早啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP