我正在使用 awk 找出每秒读取量(rd_sec/s)最高的设备(来自 SAR 文件),下面是我的命令:
# sar -d -f sa28 | awk '{print $3,$4}' |sort -k1,1n
输出以排序的方式显示在控制台上,但我想要 rd_sec/s 最高的准确条目。
输出如下:
dev8-0 9.92
dev8-0 9.92
dev8-0 9.93
dev8-0 9.94
dev8-0 9.94
dev8-0 9.96
dev8-0 9.98
dev8-0 9.98
dev8-0 9.98
dev8-0 9.98
dev8-0 9.98
dev8-0 9.99
我怎样才能做到这一点?命令中有什么变化?
答案1
您可以删除该sort
命令(并且您不再需要tail
):
sar -d -f sa28 | awk '$4 > entries[$3] {entries[$3] = $4} END {for (entry in entries) {print entry, entries[entry]}}'
这将打印每个设备的最高值。
如果你想找到所有条目中最高的一个:
sar -d -f sa28 | awk '$4 > highest {highest = $4; device = $3} END {print device, highest}'
或者
sar -d -f sa28 | awk '{print $3, $4}' | sort -k2,2n | tail -n 1
答案2
您需要将结果输入到“tail -1”中