2017-03-09 42 views
0

Iam使用sar -r 1 1获取内存消耗的输出。
以下为输出在单行中排列行和列

Linux XXX  SOME_DATE  ARCHITECTURE  NO. OF CPU 

02:05:38 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit  %commit 
02:05:39 PM 125296 16209328  99.23 260300 1496748 9588744  46.71 
Average:  125296 16209328  99.23 260300 1496748 9588744  46.71 

现在我想摆脱前两行和前两列的和下面的命令工作

sar -r 1 1 | sed -n 3,4p | cut -d " " -f3- 

输出是

kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit 
    125820 16208804  99.23 260680 1499836 9588268  46.71 

我的问题是,我如何安排第一列,第一行=第二列,第二行等......例如kbmemfree = 125820, kbmemused = 16208804,等等...

+0

用四个空格前缀代码/数据。请看[编辑帮助](http://stackoverflow.com/editing-help)。 – Cyrus

+0

感谢您的编辑... –

回答

2

可以通过管道将awk和做有:

sar -r 1 1 | awk 'NR==3 {for(i=3;i<=NF;++i){a[i]=$i}} NR==4{for(i=3;i<=NF;++i){printf "%s=%s, ", a[i],$i};print '\n'}' 

这需要输出,如果备案号为3,捕捉阵列a[]头。如果记录号是4,则打印出格式header=number,

+0

工作就像一个魅力...非常感谢你! –