#!/bin/gawk -f NR > 1 { if (!sub(/\([0-9]+:.*\)$/, "", $7)) { # should be root name[i++] = $7 cache[$7] = $1 objsize[$7] = $2 ssize[$7] = $6 } alloc[$7] += $3 total[$7] += $4 slabs[$7] += $5 } END { printf("%-16s %8s %9s %8s %5s %4s %s\n", "CACHE", "OBJSIZE", "ALLOCATED", "TOTAL", "SLABS", "SSIZE", "NAME") for (j = 0; j < i; j++) { n = name[j] printf("%16s %8d %9d %8d %5d %4dk %s\n", cache[n], objsize[n], alloc[n], total[n], slabs[n], ssize[n], n) } }