bash - 如何找到最大的元素并将其存储在数组中

标签 bash awk

我有如下所示的文件。我必须找到每个时间戳的最大值。所以我必须找到 max(2434, 2681, 2946, 1626) , max(3217, 4764, 4501, 3372) 等等......(因为这些数字有一个共同的时间戳)

Timestamp  value

1280449531 2434
1280449531 2681
1280449531 2946
1280449531 1626
1280449532 3217
1280449532 4764
1280449532 4501
1280449532 3372
1280449533 4129
1280449533 6937
1280449533 6423
1280449533 4818
1280449534 4850
1280449534 8980
1280449534 8078
1280449534 6788
1280449535 5587
1280449535 10879
1280449535 9920
1280449535 8146
1280449536 6324
1280449536 12860
1280449536 11612
1280449536 9867

我编写了这段代码,但出现错误。有人可以纠正我吗?提前致谢

#!/bin/bash
awk '{ if [ temp -ne $1 ] 
       then temp = $1; big[$1] = $2
       fi
       elif [temp -eq $1] then if [$2 gt $big[$1] ] big[$1] = $2 ; fi 
       fi

     }' plots.dat   

最佳答案

$ awk '$2>values[$1]{values[$1]=$2}END{for(i in values)print values[i],i } ' file
2946 1280449531
4764 1280449532
6937 1280449533
8980 1280449534
10879 1280449535
12860 1280449536

关于bash - 如何找到最大的元素并将其存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376511/

相关文章:

awk - gawk -e 'BEGIN {' -e 'print "hello"}' 如何工作?

linux - 进行缓冲区溢出利用时未获取 root shell

bash - 使用 sed 将所有反斜杠替换为正斜杠

linux - 在 Shell 脚本中传递 'If statement' 问题

linux - 仅使用 awk 或其他文件处理实用程序处理文件的 UNIX(AIX) 脚本

bash - 将字符串添加到文件开头,将另一个字符串添加到文件末尾

bash - make -e 只从子shell退出

c - bash 使用什么来打开/执行 argv[0]?

bash - 在 awk 中使用 bash 变量

用于从 netstat 输出中过滤掉 PID 的 UNIX 表达式