【问题标题】:In a linux file, how to print the 20 biggest numbers in a column?在 linux 文件中,如何在一列中打印 20 个最大的数字?
【发布时间】:2015-03-26 10:19:55
【问题描述】:

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

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

我是linux新手,在手册中很难找到此类问题的答案,所以希望大家能帮助我!谢谢! :)

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

grep -r 18 | chmod -R 775

再次感谢您的帮助!

【问题讨论】:

  • awk '$8>max{max=$8}END{print max}' 需要为awk '(max=="") || ($8>max){max=$8}END{print max+0}' 以处理文件中所有值都小于零或文件为空的雨天情况。

标签: linux bash file awk


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    类似这样的:

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

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

    【讨论】:

    • 哇,太完美了!我需要练习如何使用简单的命令,例如使用管道和所有内容进行排序。非常感谢您,先生:) 另外,您认为您可以帮助我更改目录中包含“18”的所有文件的权限吗?由于我是新手,所以我很难理解权限的工作原理......
    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 2023-01-20
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 2014-11-11
    相关资源
    最近更新 更多