【问题标题】:How Extract columns to free command如何提取列以释放命令
【发布时间】:2016-02-22 21:39:15
【问题描述】:

我在linux中执行命令free -mo,我的输出是:

             total       used       free     shared    buffers     cached
Mem:         64401      33265      31135          0        667      15455
Swap:         4099          0       4099

但我需要输出:

             total       used       free
Mem:         64401      33265      31135
Swap:         4099          0       4099

我打算使用free -mo | awk '{print $1,$2,$3,$4}',但我的结果是:

total used free shared
Mem: 64401 33268 31132
Swap: 4099 0 4099

感谢您的帮助。

【问题讨论】:

    标签: linux bash shell awk


    【解决方案1】:

    你可以使用:

    free -mo |
    awk '{print (NR==1?"Type":""), $1, $2, $3, (NR==1?"":$4)}' |
    column -t
    
    • Added a columnType` 使第一行 a 由 4 列组成
    • column -t 用于表格格式

    输出:

    Type   total  used  free
    Mem:   2003   163   1840
    Swap:  1430   0     1430
    

    【讨论】:

    • 感谢您的回复。
    • 仅供参考 awk '{print (NR>1?"":"Total"),$1,$2,$3,$4}' 将在管道到 column -t 之后产生相同的输出。
    • 非常感谢 Ed,我应该考虑一下。
    【解决方案2】:

    另一个没有填充标题的awk

    $ awk -v OFS='\t' 'NR==1{print "",$1,$2,$3;next} {print $1,$2,$3,$4}' file
    
            total   used    free
    Mem:    64401   33265   31135
    Swap:   4099    0       4099
    

    【讨论】:

      【解决方案3】:

      保留右对齐的数字:

      free -mo | awk 'BEGIN{len=0} NR==1{len=length(gensub(/free.*$/, "free",1))} {print substr($0,1,len)}'
                   total       used       free
      Mem:          7913       7377        535
      Swap:         8115        569       7546
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        • 2018-08-20
        • 2014-09-13
        • 2019-07-18
        • 1970-01-01
        相关资源
        最近更新 更多