【发布时间】:2014-06-16 22:36:53
【问题描述】:
我想使用 unix 命令获取前 n 条记录:
例如 输入:
- 1个
- 2 b
- 3 c
- 4 天
- 5 电子
输出(获得前 3 名):
- 5e
- 4 天
- 3 c
目前我正在做的事情:
cat myfile.txt | sort -k1nr | head -3 > my_output.txt
它工作正常,但是当文件变大时,它变得很慢。
它很慢,因为它完全对文件进行排序,而我需要的只是前 3 条记录。
我可以使用任何命令来获取前 3 条记录吗?
【问题讨论】:
-
请参阅以下内容以获得好的答案:stackoverflow.com/questions/7074430/… Unix
sort,到目前为止,这并不是对大文件进行排序的最快方法。如果您的输入有那么大,您需要考虑一种不同的方法。那个链接的 SO 帖子应该会有所帮助。 -
基本同意一般情况。但是,给定一个固定的 N,您可以在一个专用程序中单次遍历输入,保持前 N 个可见。优先级队列可能很方便。廉价查看最低条目和条目计数,对于每条记录,如果记录值 > 最低,则插入;如果 count >= limit,则删除最小值。
标签: shell sorting unix scripting