所以我有一个文件,例如:
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
Output:
10 3 ghi
20 6 qrs
30 3 tuv
解释:
awk 命令使用关联数组max
密钥为$1
和价值为$2
。每当我们遇到已经存储在该关联数组中的值时max
,我们更新之前的条目并将整行存储在另一个关联数组中row
用同一把钥匙。终于在END
我们简单地迭代关联数组row
并打印它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)