加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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部分中,我们简单地遍历关联数组行并打印它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读