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

Yar*_*miz 1 linux bash awk file

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

$ awk '$8>max{max=$8}END{print max}' my_file.txt
Run Code Online (Sandbox Code Playgroud)

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

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

grep -r 18 | chmod -R 775
Run Code Online (Sandbox Code Playgroud)

再次感谢你的帮助!

Par*_*Lal 5

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


leg*_*cia 5

像这样的东西:

sort -k 8 -n -r my_file.txt | head -20
Run Code Online (Sandbox Code Playgroud)

也就是说,使用字段8作为键(-k代表"键"),使用数字sort(-n),以相反的顺序(-r),即从最大的数字开始.最后,用前20行head.