排序反向查找列表,同时忽略标头perl

时间:2011-03-24 19:59:06

标签: perl sorting

我有一份清单。

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 个答案:

答案 0 :(得分:1)

如果文件不是很大,您可以将其读入数组并以数字方式对行进行排序:

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

my @lines = <$fh>;

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