在不使用awk添加新行的情况下将时间添加到.plot文件中

时间:2017-04-30 20:19:17

标签: linux bash shell awk

我正在编写一个shell脚本,它运行命令mpstat和iostat以获取CPU和磁盘使用情况,从中提取信息并将它们放入.plot文件中,以便稍后使用bargraph.pl对它们进行图形化。我遇到麻烦的是当我使用awk从mpstat获取时间时,就像这样

    if request.form['submit']== 'query':
        select=1
        a=db.execute("PRAGMA table_info(users)")
        schema=[]
        for i in a:
            schema.append(i['name'])
        rows=db.execute("SELECT * FROM users")

它将在代码末尾打印一个新行。我尝试使用printf,因为这适用于我的其他代码行,以获取所需的特定信息,而无需添加新的代码行,但我不知道如何格式化它。有没有办法用awk或任何其他方法来完成这个?提前谢谢。

当使用命令mpstat时,这就是bash返回的内容

mpstat | awk 'FNR == 4 {print $1;}' >> CPU_usage.plot 

这就是我想要完成的事情,花时间,usr,sys和idle将它们放入一个名为CPU_usage.plot的文件中。这就是我想要放入文件的内容:

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

我得到的是:

03:56:43     0.00     0.00     100.00

这是我的代码:

03:56:43
0.00     0.00     100.00

1 个答案:

答案 0 :(得分:0)

使用以下 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