2011-03-24 42 views
0

我有一个列表。排序反向查找列表,同时忽略标题perl

27 IN PTR conf.
27 IN PTR test.
250 IN PTR testbed1.
251 IN PTR testbed2.
55 IN PTR t.
48 IN PTR nagios.
49 IN PTR cacti-01.
29 IN PTR vmwlinux01.
22 IN PTR regserver.
6 IN PTR grpwise.
18 IN PTR blah.
28 IN PTR srver.
60 IN PTR aiscons2.
45 IN PTR digg.
1 IN PTR ip-3-.
2 IN PTR ip-3-.

该列表具有报头是15行长。我想按照左边的数字排列这个列表,从最小到最大。

希望,我将最终得到一个列表这样

header ~~~~~~~~~~
1 IN PTR ip-3-.
2 IN PTR ip-3-. 6 IN PTR grpwise.
18 IN PTR blah.
22 IN PTR regserver.
27 IN PTR conf.
27 IN PTR test.
28 IN PTR srver.
29 IN PTR vmwlinux01.
45 IN PTR digg.
48 IN PTR nagios.
49 IN PTR cacti-01.
55 IN PTR t.
60 IN PTR aiscons2.
250 IN PTR testbed1.
251 IN PTR testbed2.

我不知道从哪里开始实现代码。我想过使用tail -n $lc $file | sort -g其中$ lc是行数减去标题,$ file是要排序的文件。

有什么建议吗?

谢谢

顺便说一句,我出于安全原因更改了名称。

回答

1

数字如果文件不是很大,你可以阅读到一个数组和排序行:

open my $fh, '<', $file or die $!; 

my @lines = <$fh>; 

print @lines[0..14]; # the header 
print sort { $a <=> $b } @lines[15..$#lines];