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