How about
awk -F"\.\.+" '
BEGIN {HD = "Device Manufacturer Machine Type and Model FRU Number Serial Number Part Number"
for (MX=n=split (HD, HDArr, "\t"); n>0; n--) {SRCH[HDArr[n]]
LNG[n] = length(HDArr[n])
}
}
/^(SYSTEM|MODEL|PROCESS|NUMBER)/
!LEADINDONE &&
!NF {LEADINDONE = 1
print
print HD
gsub (/[^\t]/, "-", HD)
print HD
}
!LEADINDONE {next
}
NF == 1 {TMPL = RES[HDArr[4]] RES[HDArr[5]] RES[HDArr[6]]
if (TMPL != "") for (i=1; i<=MX; i++) printf "%-*s%s", LNG, RES[HDArr]?RES[HDArr]:"NA", (i == MX)?ORS:OFS
# else delete CNT[TMPCNT]
split ("", RES)
split ($0, T, " ")
RES[HDArr[1]] = T[1]
TMPCNT = T[1]
sub (/[0-9]*$/, _, TMPCNT)
CNT[TMPCNT]++
}
NF < 2 {next
}
{sub (/^ */, "", $1)
}
$1 in SRCH {RES[$1] = $NF
}
END {for (i=1; i<=MX; i++) printf "%-*s%s", LNG, RES[HDArr]?RES[HDArr]:"NA", (i == MX)?ORS:OFS
printf RS
for (c in CNT) print "Total", c, ":", CNT[c]
}
' OFS="\t" file
SYSTEM: nb11cu51
MODEL, TYPE, and SN: IBM,9026-P70,01100699F
PROCESSOR TYPE: PowerPC_RS64-II
NUMBER OF PROCESSORS: 4
Device Manufacturer Machine Type and Model FRU Number Serial Number Part Number
------ ------------ ---------------------- ---------- ------------- -----------
rmt0 EXABYTE IBM-20GB 59H4120 60171713 59H4117
rmt1 IBM 03570C11 NA 0000000A6844 NA
ssa0 IBM053 NA 34L5318 S0237219 09L569B
ssa1 IBM053 NA 34L5388 S0270187 09L5695
rmt1 IBM 03570C11 NA 0000000A6844 NA
hdisk0 IBM DNES-309170W 25L3101 AJJ55889 25L1861
hdisk1 SEAGATE DPSS-309170N 07N3675 ZD11B560 07N3721
pdisk0 IBM DRVC09B NA 680BA636SA 34L8483
pdisk01 MAC DRVC09A NA 680BA636TT 34L8483
Total rmt : 3
Total pdisk : 2
Total ssa : 3
Total pci : 2
Total hdisk : 2
Total tmscsi : 2
The total counts are at the end as they are available only then; the reason pci and tmscsi counts are shown is that your input file does NOT stick to a reasonable structure (if you remove the # from the delete CNT line, ssa count will disappear as well...).