【问题标题】:selecting highest value in a table选择表中的最大值
【发布时间】:2014-06-17 04:53:30
【问题描述】:

具有 3 列的文件,以制表符分隔。我想从第 3 列(与第 1 列同名)中选择最大值并打印为第 4 列。

输入文件

A       l       10
A       l       2
A       m       6
B       l       12
B       m       13
B       n       7
C       l       9
C       l       8
C       n       19

输出文件

A       l       10      10
A       l       2       10
A       m       6       10
B       l       12      13
B       m       13      13
B       n       7       13
C       l       9       19
C       l       8       19
C       n       19      19

您能否建议使用 awk 或 sed 命令。谢谢

【问题讨论】:

  • 这些数字总是正数吗?
  • @Ashkan 提出的优秀、有见地、影响解决方案的问题!

标签: awk sed


【解决方案1】:

你可以用这个awk

awk 'FNR==NR {arr[$1]=arr[$1]>$3?arr[$1]:$3;next} {print $0,arr[$1]}' OFS="\t" file{,}
A       l       10      10
A       l       2       10
A       m       6       10
B       l       12      13
B       m       13      13
B       n       7       13
C       l       9       19
C       l       8       19
C       n       19      19

这通过file 两次。第一次找到最高,旁边打印。
file{,} 使文件名加倍。您也可以改用file file

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 2020-11-14
    • 1970-01-01
    • 2021-08-14
    • 2012-03-16
    • 2020-05-28
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多