如何在正常运行时间的输出中读取从右开始的行?



当我在终端uptime上发出命令时,它返回:

13:

21:52 向上 13:02, 3 个用户, 平均负载: 1.10, 1.09, 0.96

然后,我想使用以下方法打印字段 8,9,10 处的负载平均值:

uptime | awk '{print $8}' | tr -d ","

那么结果将是 :1.10

但是,有时,当电脑启动超过一天时,它会返回:

13:

22:12 最多 6 天, 19:50, 3 用户, 负载平均: 1.10, 1.09, 0.96

如您所见,字段列的数量不是固定的。我不想手动编辑要打印的字段编号。所以,我想从右侧开始阅读这一行。这样,0.96 将是字段 0,1.09 将是字段 1,依此类推。我不在乎左侧附近的值。

您可以通过一次调用awk来完成。基本调用是:

uptime | awk '{ print $(NF - 2) }'

要同时删除逗号而不是使用tr创建另一个子外壳,您可以执行以下操作:

uptime | awk '{ gsub(/,/,""); print $(NF - 2) }'

如果您有任何其他问题,请告诉我。

这样,您就不必担心uptime问题。

cat /proc/loadavg|awk '{print $1,$2,$3}'

另一个带有rev的命令,因为rev很有趣:

uptime | rev | cut -d , -f 3 | rev

如果只是按逗号拆分,字段数可能会有所不同,但如果先按冒号拆分,然后再按逗号拆分,则您感兴趣的数字是最后一组中的第一个字段:

uptime | cut -d : -f 5 | cut -d , -f 1

最新更新