-4

我有一个包含这些数据的文件:


elapsed_time         disk_reads          sqlid

2            316         c1532tkq9mc0md5

1            0       lwabizjrfgcnkt1bb5k

1            240         jusnum7hy4

0            5       s69t8ze3rtuxik9s4

0            0       w4la6it246coqfqa

33           0       18wpwk3ync5c

0            0       8lhgyx4z43xk5dl4y7z

0            0       hqbhyibw94ns06mhrbz

30           0       ruu3oacuq1bjzo

20           0       vbk1zfvmk187

2            316         ll1ultl7ttpikuzqo9j

1            0       ftc6ix6lahetwsxfo

我想在 Perl 中返回 TOP 经过时间的 3 行:

30           0       ruu3oacuq1bjzo

20           0       vbk1zfvmk187

33           0       18wpwk3ync5c

有人能帮助我吗 ?

4

1 回答 1

1

读取所有行,按经过时间降序排序,并打印前三行,

perl -ne '/^(\d+)/ or next;push @r,[$_,$1] }{ print map { ($i++ < 3) ? $$_[0]:() } sort{$$b[1]<=>$$a[1]} @r' file
于 2013-07-09T10:43:36.323 回答