如何将列提取为自由命令

时间:2016-02-22 21:39:15

标签: linux bash shell awk

我在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

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用:

free -mo |
awk '{print (NR==1?"Type":""), $1, $2, $3, (NR==1?"":$4)}' |
column -t
  • Added a column输入第一行的第一行包含4列
  • column -t用于表格格式

<强>输出:

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

答案 1 :(得分:1)

保留右对齐数字:

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

答案 2 :(得分:1)

另一个没有填充标题的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