我正在编写一个 shell 脚本,该脚本运行命令 mpstat 和 iostat 以获取 CPU 和磁盘使用情况,从中提取信息并将它们放入 .plot 文件中,以便稍后使用 bargraph.pl 绘制它们。我遇到的麻烦是当我像这样使用 awk 从 mpstat 获取时间时
mpstat | awk 'FNR == 4 {print $1;}' >> CPU_usage.plot
它会在代码末尾打印一个新行。我尝试使用 printf,因为这适用于我的其他代码行,无需添加新代码行即可获取所需的特定信息,但我不知道如何格式化它。有没有办法用 awk 或我可以用来完成这个的任何其他方法来做到这一点?提前致谢。
当使用命令 mpstat 时,这就是 bash 返回的内容
Linux 3.4.0+ (DESKTOP-JM295S0) 04/30/2017 _x86_64_ (4 CPU)
03:56:43 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
03:56:43 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
这就是我要完成的工作,将时间、usr、sys 和 idle 放入一个名为 CPU_usage.plot 的文件中。这是我想放入文件中的内容:
03:56:43 0.00 0.00 100.00
我得到的是:
03:56:43
0.00 0.00 100.00
这是我的代码:
mpstat | awk 'FNR == 4 {print $1;}' >> CPU_usage.plot
mpstat | awk 'FNR == 4 {printf " %f", $4;}' >> CPU_usage.plot
mpstat | awk 'FNR == 4 {printf " %f", $6;}' >> CPU_usage.plot
mpstat | awk 'FNR == 4 {printf " %f\n", $13;}' >> CPU_usage.plot
最佳答案
使用以下awk方法:
mpstat | awk 'NR==4{print $1,$4,$6,$13}' OFS="\t" >> CPU_usage.plot
现在,CPU_usage.plot
文件应包含:
03:56:43 0.00 0.00 100.00
关于linux - 使用 awk 在不添加新行的情况下将时间添加到 .plot 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43710941/