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
........ 展开
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
........ 展开
1个回答
展开全部
如果你是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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询