unix命令:如何获得前n条记录

use*_*379 6 unix sorting shell scripting

我想使用unix命令获得前n个记录:

例如输入:

  • 1 a
  • 2 b
  • 3 c
  • 4 d
  • 5 e

输出(获得前3名):

  • 5 e
  • 4 d
  • 3 c

目前我在做:

cat myfile.txt | sort -k1nr | head -3 > my_output.txt
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是当文件变大时,它变得非常慢.

它很慢,因为它完全对文件进行排序,而我需要的只是前3个记录.

有什么命令我可以用来获得前三名的记录吗?

MPH*_*426 -2

您是否尝试过更改命令的顺序?

像这样。

排序 -k1nr myfile.txt | 头-3 > my_output.txt

  • 它将加快较大文件的执行速度。任何时候只要你能够消除一个流程,你就能获得速度。允许排序直接对文件进行排序,而无需先读取它。对 2GB 文件进行排序可节省整整一分钟的时间。当然,在一台已有 10 年历史的计算机上,先运行 cat 需要 9 分钟。;) (2认同)