在linux文件中,如何打印列中最大的20个数字?

时间:2015-01-27 17:39:38

标签: linux bash file awk

我尝试使用awk,我可以找到第8列中的最大数字。现在我需要找到列中最大的20个。我使用很多变量吗?以下是我所知道的使用方法:

$ awk '$8>max{max=$8}END{print max}' my_file.txt

我是Linux的新手,我发现很难在手册中找到这样的问题的答案,所以我希望你们能帮助我!谢谢! :)

哦,还有一件事:我需要更改包含" 18"的所有文件的权限。内。我尝试使用这样的东西而且它没有用,因为我错过了一些东西(我甚至不知道它是否可以这样写):

grep -r 18 | chmod -R 775

再次感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

您是否尝试过sort -nrk8 my_file.txt | head -20? n标志使其成为数字排序,r反转它(最大的第一个),k8选择第8个列。

答案 1 :(得分:5)

这样的事情:

sort -k 8 -n -r my_file.txt | head -20

即,使用字段8作为键(-k代表“键”),使用数字排序(-n),以相反的顺序(-r)排序,即,从最大的数字开始。最后,使用head获取前20行。