求per怎么l比较相同行得到值最大的一行

weixin_40901210 2018-05-06 11:27:00
例如:
94871 97178 01g000005 264
96199 97178 01g000005 418
108596 113329 01g000008 4124
108596 113329 01g000008 3984
249553 254561 01g000015 4999
249486 253550 01g000015 3854
249486 253550 01g000015 3854
249553 253550 01g000015 2523
285710 286478 01g000016 573
得到:
1 96199 97178 01g000005 418
1 108596 113329 01g000008 4124
1 249553 254561 01g000015 4999
1 285710 286478 01g000016 573

...全文
947 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40901210 2018-05-16
  • 打赏
  • 举报
回复
谢谢大神~ 想问下$hash{$key}{'value'}是代表什么意思呢~
立虻 2018-05-13
  • 打赏
  • 举报
回复
#!/usr/bin/perl

use strict;
use warnings;

my %hash = ();
while (<DATA>) {
	my @data = split /\s+/;
         chomp;
         my $key = $data[2];
         my $range = "$data[0]\t$data[1]";
         if (not exists $hash{$key} or $data[3] > $hash{$key}{'value'}) {
                 $hash{$key}{'value'} = $data[3];
                 $hash{$key}{'range'} = $range;
         }
}
foreach my $key (sort keys %hash) { print "$hash{$key}{'range'}\t$key\t$hash{$key}{'value'}\n"; }
<>;

__DATA__
94871 97178  01g000005 264
96199 97178  01g000005 418
108596 113329 01g000008 4124
108596 113329  01g000008 3984
249553 254561  01g000015 4999
249486 253550 01g000015 3854
249486 253550  01g000015 3854
249553 253550  01g000015 2523
285710 286478  01g000016 573
仅供参考!

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧