我有一个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/

10-15 21:39