首页 > 解决方案 > 如何在正常运行时间的输出中从右开始读取一行?

问题描述

当我在终端上发出命令时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,依此类推。我不在乎左侧附近的值。

标签: awksed

解决方案


您只需调用awk. 基本调用是:

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

要同时摆脱逗号而不是创建另一个子shell tr,您可以这样做:

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

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


推荐阅读