Perl如何按第二列排序?

有个文本文件有几百行,有三列分别代表:序列值,X值,Y值。例如:aa-bb-cc12.513.9ac-tr-aa28.65.6tt-uu-asda128.8aaaa-xx... 有个文本文件有几百行,有三列分别代表:序列值,X值,Y值。例如:
aa-bb-cc 12.5 13.9
ac-tr-aa 28.6 5.6
tt-uu-asda 12 8.8
aaaa-xxx-eee 88 3.2
..........
如何按Y值从小到大排列?要求排序输出如下:
aaaa-xxx-eee 88 3.2
ac-tr-aa 28.6 5.6
tt-uu-asda 12 8.8
aa-bb-cc 12.5 13.9
........
展开
 我来答
GenomeGuy
2013-12-18 · TA获得超过101个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:111万
展开全部

如果你是linux环境的话,可以直接用sort命令进行排序

sort -k 2nr your_file.txt  > res.txt


如果没有的话用下面的perl脚本也可以实现

注:这个代码的结果是输出在STDOUT上的

#!/usr/bin/env perl 
use strict;
use warnings;

my $file = "file.txt";
open FH,$file or die "$!";
my @lines = <FH>;
close FH;

my @arr = map { my @temp = split /\t/; \@temp } @lines;
@arr = sort { $$b[1] <=> $$a[1] } @arr; 
map { print @{[ join "\t" , @$_ ]} } @arr;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式