Bash 获取最后一个样本

Bash 获取最后一个样本,bash,awk,Bash,Awk,我需要使用awk表单变量来表示这个轴[Subrack=xxx,Slot=x]:[sample]。如何使用awk从下面的输出中仅获取每个CPU的最新样本 Time Object The_average_processor_load_of_a_board_in_percent 22:30 Subrack=MAIN,Slot=1 1 22:30 Subrack=MAIN,Slo

我需要使用awk表单变量来表示这个轴[Subrack=xxx,Slot=x]:[sample]。如何使用awk从下面的输出中仅获取每个CPU的最新样本

Time  Object               The_average_processor_load_of_a_board_in_percent
22:30 Subrack=MAIN,Slot=1                                                 1
22:30 Subrack=MAIN,Slot=12                                               21
22:30 Subrack=MSE1,Slot=1                                                 1
22:30 Subrack=MSE1,Slot=10                                                3
22:30 Subrack=MSE1,Slot=11                                                3
22:30 Subrack=MSE2,Slot=1                                                 1
22:30 Subrack=MSE2,Slot=10                                                1
22:45 Subrack=MAIN,Slot=1                                                 1
22:45 Subrack=MAIN,Slot=12                                               20
22:45 Subrack=MSE1,Slot=1                                                 1
22:45 Subrack=MSE1,Slot=10                                                3
22:30 Subrack=MSE1,Slot=11                                                2
22:45 Subrack=MSE2,Slot=1                                                 1
22:45 Subrack=MSE2,Slot=10                                                1
我尝试了以下代码

awk '!seen[$0]++ {lines[i++]=$0} END {for (i in lines) if (seen[lines[i]]==1) print lines[i]}' {print} {++seen[$0]}'
没有得到预期的结果


发布的输出被剪切,完整的输出可以在这里查看:

使用数组保存每个CPU的时间和样本。如果当前行的时间高于该CPU的保存时间,则替换它们

awk '$0 > time[$2] { time[$2] = $1; sample[$2] = $3; }
     END { for (cpu in sample) printf("[%s]:[%d]\n", cpu, sample[cpu]) }'

这就是你想做的吗

$ cat tst.awk
NR==1 { print $2, "latest"; next }
{ latest[$2] = $3 }
END { for (cpu in latest) print cpu, latest[cpu] }

$ awk -f tst.awk file | column -t
Object                latest
Subrack=MAIN,Slot=12  20
Subrack=MSE2,Slot=10  1
Subrack=MSE1,Slot=10  3
Subrack=MSE1,Slot=11  2
Subrack=MAIN,Slot=1   1
Subrack=MSE2,Slot=1   1
Subrack=MSE1,Slot=1   1

您还有一个额外的引号——请注意语法highlightingHow可以对每个CPU使用它?`[root@lnxni075~]#awk'$0>time[$1]{time[$1]=$0;sample[$1]=$3;}END{for(样本中的cpu)printf(“[%s]:[%d]\n”,cpu,sample[cpu])}/tmp/test.log`[22:30]:[1][22:45]:[1]我在列编号上犯了一个错误,现在应该修复。第二列是CPU,对吗?因此,它存储每个CPU的样本和时间戳。是的,第2列是CPU