有人帮我使用Perl吗?我是新的。问题是我有以下类型的文件:
37 0.61 61 0.30 86 0.03
61 0.50 42 0.44 65 0.01
我需要按照以下方式对它们进行排序:
86 0.03 61 0.30 37 0.61
65 0.01 61 0.50 42 0.44
最后让他们喜欢:
0.03 0.30 0.61
0.01 0.50 0.44
有人可以帮助我吗?
答案 0 :(得分:1)
转换此数据
37 0.61 61 0.30 86 0.03
61 0.50 42 0.44 65 0.01
到这个
0.03 0.30 0.61
0.01 0.50 0.44
按第一个值按降序排列每对数字:
#!/usr/bin/perl
use strict;
open my $fh, '<', './input.txt' or die "open: $!\n";
while (my $line = <$fh>) {
my %data;
while ($line =~ /(\S+)\s+(\S+)/g) {
$data{$1} = $2;
}
foreach my $key (sort {$b <=> $a} keys %data) {
print "$data{$key}\t";
}
print "\n";
}
close $fh;
答案 1 :(得分:0)
基于grebneke的解决方案:
#!/usr/bin/perl
use strict;
use warnings FATAL => qw/all/;
$\ = $/;
$, = "\t";
while (<DATA>)
{
chomp;
my %data = split;
print map $data{$_}, sort {$b <=> $a} keys %data;
}
__DATA__
37 0.61 61 0.30 86 0.03
61 0.50 42 0.44 65 0.01