Linux 如何提取列以释放命令
我在linux中执行命令Linux 如何提取列以释放命令,linux,bash,shell,awk,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 us
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
非常感谢您的帮助。您可以使用:
free -mo |
awk '{print (NR==1?"Type":""), $1, $2, $3, (NR==1?"":$4)}' |
column -t
Type`for make first row a由4列组成添加了一列
用于表格格式column-t
Type total used free
Mem: 2003 163 1840
Swap: 1430 0 1430
保留右对齐的数字:
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
另一个
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
感谢您的回复。仅供参考,
awk'{print(NR>1?“:“Total”),$1、$2、$3、$4}'
将在管道到列-t
后产生相同的输出。非常感谢Ed,我应该考虑到这一点。