标题: 数据按机器名重新排列 [打印本页] 作者: arccos2002 时间: 2009-06-12 10:50 标题: 数据按机器名重新排列 如下文本格式:
102 CPU Utilization CPU0 [cpu] 0
102 CPU Utilization CPU1 [cpu] 0
102 CPU Utilization CPU2 [cpu] 0
102 CPU Utilization CPU3 [cpu] 0
102 CPU Utilization CPU4 [cpu] 0
102 CPU Utilization CPU5 [cpu] 0
102 CPU Utilization CPU6 [cpu] 0
102 CPU Utilization CPU7 [cpu] 0
102 Used Space C: Label: Seri [hdd_used] 11.898
102 Used Space D: Label: [hdd_used] 0.7676
102 Used Space Physical Memory [hdd_used] 7.0095
201 CPU Utilization CPU0 [cpu] 0
201 CPU Utilization CPU1 [cpu] 0
201 CPU Utilization CPU2 [cpu] 0
201 CPU Utilization CPU3 [cpu] 0
201 CPU Utilization CPU4 [cpu] 0
201 CPU Utilization CPU5 [cpu] 0
201 CPU Utilization CPU6 [cpu] 0
201 CPU Utilization CPU7 [cpu] 0
201 Used Space C: Label: Seri [hdd_used] 11.8008
201 Used Space D: Label: Seri [hdd_used] 0.5128
201 Used Space E: Labelata [hdd_used] 43.5829
201 Used Space F: Label:Log S [hdd_used] 5.2436
201 Used Space Physical Memory [hdd_used] 8.1337
202 CPU Utilization CPU0 [cpu] 0
202 CPU Utilization CPU1 [cpu] 0
202 CPU Utilization CPU2 [cpu] 0
202 CPU Utilization CPU3 [cpu] 0
202 CPU Utilization CPU4 [cpu] 0
202 CPU Utilization CPU5 [cpu] 0
……
现在要处理成这样的格式
机器名 CPU 0 CPU 1 …… CPU 8 Used Space C: Label: Seri [hdd_used] Used Space D: Label: Seri [hdd_used] ……
102 0 0 ……
201 0 0 ……
202
……
请问如何处理比较妥当
To 楼主:
你的文本第一个字段是机器名,最后一个字段是赋值,所以通过判断$1是否发生变化按相应格式输出$NF就行了。作者: lucash 时间: 2009-06-12 11:53
是要这样之么?
awk '{if(!a[$1]) a[$1]=$4;else if ($2~/CPU/) {a[$1]=a[$1]","$4} else {a[$1]=a[$1]" "$2" "$3" "$4" "$5" "$6}}END{for(i in a) printf"\t%-5s%-s\n",i,a[i]}' file
复制代码
结果是这样的:
102 CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 Used Space C: Label: Seri Used Space D: Label: [hdd_used] Used Space Physical Memory [hdd_used]
201 CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 Used Space C: Label: Seri Used Space D: Label: Seri Used Space E: Label:Data [hdd_used] Used Space F: Label:Log S Used Space Physical Memory [hdd_used]
202 CPU0 CPU1 CPU2 CPU3 CPU4 CPU5
复制代码
作者: lucash 时间: 2009-06-12 12:29
看明白了:这样好像可以:
bash-3.2# awk '{if(!a[$1]) a[$1]=$1; else {a[$1]=a[$1]" "$NF}}END{for(i in a) print a[i]}' file