bash - bash 中的 awk 和 printf

标签 bash awk printf

我正在尝试获取过去 5 分钟内平均负载的四舍五入数。所以这是我的命令:

 uptime | awk -F, '{print $5}'|printf "%.0f\n"

这似乎不正确,因为它总是给我 0。

如果我尝试使用变量作为 awk 和 printf 之间的中间变量,那么它是正确的

 avgload=$(uptime | awk -F, '{print $5}')

 printf "%.0f\n" $avgload

所以我的第一次尝试有什么问题吗?

谢谢和问候!

更新:

只是为了获取过去 5 分钟的平均负载,这是我的 linux 服务器 (Kubuntu) 上正常运行时间的输出

$ uptime<br/> 13:52:19 up 29 days, 18 min, 15 users, load average: 10.02, 10.04, 9.58

在我的笔记本电脑 (Ubuntu) 上是类似的

`$ 正常运行时间

13:53:58 up 3 days, 12:02, 8 users, load average: 0.29, 0.48, 0.60 `

这就是我选择第 5 个字段的原因。

最佳答案

正常运行时间输出中的第 5 个逗号分隔字段不存在(至少在我的系统上),这就是为什么你总是得到零。 5 分钟的正常运行时间是倒数第二个字段,因此它有效:

uptime | awk '{printf "%.0f\n",$(NF-1)}'  

关于bash - bash 中的 awk 和 printf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1505063/

相关文章:

linux - 自主脚本

c++ - 无法在Visual Studio中的Bash中运行文件

linux - cat 只写入文件 evert 4.1kb

linux - AWK 输出到数组

c - printf 只给出警告

将 double 转换为整数以提高速度

bash - 是否有一个方便的相当于 "find -mtime <days>"的一天中的部分时间

bash - 使用 AWK 基于一个文件创建文件夹,并根据另一文件创建这些文件夹中的文件

shell - printf 格式字符串中的变量插值与替换

Bash Autocomplete Ubuntu 列出所有而不是循环