0

如何将输出格式化为所需的格式:

SUBPATH                     DANAME               DMNAME       GROUP        STATE
cciss/c0d0                  cciss/c0d0           -            -            ENABLED
sda                         xiv0_001b            emc000       gicn2db_PRD  ENABLED
sdb                         xiv0_001b            emc000       gicn2db_PRD  ENABLED
sdd                         xiv0_001b            emc000       gicn2db_PRD  ENABLED
sdc                         xiv0_001b            emc000       gicn2db_PRD  ENABLED
sdx                         xiv0_004f            0000         ddrr2db_PRD  ENABLED
sdad                        xiv0_004f            0000         ddrr2db_PRD  DISABLED
sdaa                        xiv0_004f            0000         ddrr2db_PRD  ENABLED
sdu                         xiv0_004f            0000         ddrr2db_PRD  ENABLED
sdaj                        xiv0_005d            0001         gconfdb_PRD  DISABLED
sdag                        xiv0_005d            0001         gconfdb_PRD  ENABLED
sdah                        xiv0_005d            0001         gconfdb_PRD  ENABLED
...

例如,我需要解析这个块并创建如下输出:

xiv0_001b has <total_amount> of ENABLED paths and <total_amount> of DISABLED paths.
...

因为每个名称都重复了几次(状态和磁盘名称......)

最好使用awk以避免使用grep等进行多次解析...

4

1 回答 1

0

这是一种方法:

$ awk 'NR>1{$5=="ENABLED"?e[$2]++:d[$2]++}END{for(i in e)printf "%s ENABLED %d DISABLED %d\n",i,e[i],d[i]}' file
xiv0_005d ENABLED 2 DISABLED 1
xiv0_004f ENABLED 3 DISABLED 1
cciss/c0d0 ENABLED 1 DISABLED 0
xiv0_001b ENABLED 4 DISABLED 0

根据需要修改printf格式。

于 2013-04-12T09:15:12.620 回答