我有一个5列的标签分隔文件在列3中列出的条目中,当第4栏中的值为最大值时,我想打印整行。
输入示例:
Col1 Col2 Col3 Col4 Col5
123 456 22 NM01 +
675 564 21 NM01 +
342 789 12 NM01 +
231 452 56 NM02 +
456 783 178 NM02 +
预期结果:
123 456 22 NM01 +
456 783 178 NM02 +
基本上,当Col3有col4中条目的最大值时,打印出行。
我正在尝试使用unix命令。我是新手,无法找到如何查找col3中每种col4的最大值的示例(例如:NM01、NM02…)
最佳答案
可以使用两个映射:1跟踪每个字段的最大值$4
,并且跟踪每个字段的最大值$4
:
awk '$3 > max[$4] { max[$4] = $3; m[$4] = $0 }
END { for (i in m) { print m[i] } }' file.txt
这将输出:
Col1 Col2 Col3 Col4 Col5
123 456 22 NM01 +
456 783 178 NM02 +
如果不需要标题行,可以添加
NR > 1
条件。关于bash - 在另一列中列出同一条目ID的列中显示最大值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45243570/