bash – 使用awk获取列的最大值,用于另一列的每个唯一值
发布时间:2020-12-16 01:53:02 所属栏目:安全 来源:网络整理
导读:所以我有一个文件,如: 10 1 abc10 2 def10 3 ghi20 4 elm20 5 nop20 6 qrs30 3 tuv 我想得到第一列的每个值的第二列的最大值,即: 10 3 ghi20 6 qrs30 3 tuv 如何使用awk或类似的unix命令? 解决方法 你可以使用awk: awk '$2max[$1]{max[$1]=$2; row[$1]=$
所以我有一个文件,如:
10 1 abc 10 2 def 10 3 ghi 20 4 elm 20 5 nop 20 6 qrs 30 3 tuv 我想得到第一列的每个值的第二列的最大值,即: 10 3 ghi 20 6 qrs 30 3 tuv 如何使用awk或类似的unix命令? 解决方法
你可以使用awk:
awk '$2>max[$1]{max[$1]=$2; row[$1]=$0} END{for (i in row) print row[i]}' file 输出: 10 3 ghi 20 6 qrs 30 3 tuv 说明: awk命令使用关联数组max,key为$1,值为$2.每当我们遇到已存储在此关联数组max中的值时,我们就会更新前一个条目并将整行存储在另一个具有相同键的关联数组行中.最后在END部分中,我们简单地遍历关联数组行并打印它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |