救命呀,perl求和及过滤难题
时间:2010-10-08
来源:互联网
列1 列2
aaaa 3
bbbb 2
cccc 9
dddd 4
eeee 1
aaaa 4
aaaa 2
eeee 2
bbbb 2
小弟想要得到结果是:如果《列1》中有重复的数据,则去重,并且累加《列2》中值;如果累计后的《列2》值小于5,就把此列过滤掉。
结果:
列1 列2
aaaa 9
cccc 9
小弟在线等,还请大虾们多多指教~
作者: ontherd 发布时间: 2010-10-08
- my %data;
-
- while (<FH>) {
- my ($key, $val) = split /\s+/;
-
- if (defined $data{$key}) {
- $data{$key} += $val;
- }
- else {
- $data{$key} = $val;
- }
- }
-
- for my $key (sort keys(%data)) {
- next if $data{$key} < 5;
-
- print $key, "\t", $data{$key}, "\n";
- }
作者: longbow0 发布时间: 2010-10-08
试试这个
- #!/usr/bin/perl
- use strict;
- use warnings;
-
-
-
- my %result = ();
- my $title;
- while(<DATA>){
- chomp;
- if($. == 1){
- $title = $_;
- next;
- }
- my ($key,$value) = split /\s+/,$_;
- $result{$key} += $value;
- }
-
- print $title,"\n";
- for(sort keys %result){
- print "$_ $result{$_}\n" if $result{$_} >= 5;
- }
-
-
- exit;
-
- __DATA__
- 列1 列2
- aaaa 3
- bbbb 2
- cccc 9
- dddd 4
- eeee 1
- aaaa 4
- aaaa 2
- eeee 2
- bbbb 2
- #!/usr/bin/perl
- use strict;
- use warnings;
-
-
-
- my %result = ();
- grep { my ($key,$value) = split /\s+/,$_;$result{$key} += $value } <DATA>;
- grep { print "$_ $result{$_}\n" if $result{$_} >= 5 }sort keys %result;
-
- exit;
-
- __DATA__
- aaaa 3
- bbbb 2
- cccc 9
- dddd 4
- eeee 1
- aaaa 4
- aaaa 2
- eeee 2
- bbbb 2
作者: 珞水的大叔 发布时间: 2010-10-08
小弟想咨询下:
$result{$key} += $value;
上面这句这么理解,还请您给些文字性描述。
作者: ontherd 发布时间: 2010-10-08
非常谢谢您,

作者: ontherd 发布时间: 2010-10-08
回复 ontherd
$result{$key} = $result{$key} + $value;
不会你没有用过hash吧……
作者: 珞水的大叔 发布时间: 2010-10-08
呵呵~~~,说来惭愧。经过你的讲解,现在已经理解了。
小弟,还有个问题想问您下:
在Linux下,我刚才试了您写的perl program来处理500万条数据,CPU就上升到90%左右,难道perl不能处理大批量的数据吗???
作者: ontherd 发布时间: 2010-10-08
作者: wxlfh 发布时间: 2010-10-08
你不会是吧500万的数据贴到了脚本里面的__DATA__之后了吧……
作者: 珞水的大叔 发布时间: 2010-10-08

作者: ontherd 发布时间: 2010-10-08

作者: ontherd 发布时间: 2010-10-08

作者: ontherd 发布时间: 2010-10-08
我在里面加了一行代码:
if (! open DATA,"<","文本文件.txt"

die "cannot open datafile

}
不知道是不是您说的把数据都加到了____DATA____ 里了。
作者: ontherd 发布时间: 2010-10-08
哦,不用放到脚本里
至于为什么占用cpu这么多我也没有遇到过……
请达人们help解答一下
作者: 珞水的大叔 发布时间: 2010-10-08
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28