#This generates a default file except for the kloc line that comes at the top. BEGIN{ FS=OFS="," } NR==1{for(i=1;i<=NF;i++){ColName[i]=$i}} NR>2{for (i=1;i<=NF;i++) { Data[i,$i]++; } } END { for(i=1;i<=NF;i++) { # xl, vl, l, n, h, vh, xh if (Data[i,"xl"]>0) {Min="xl"} else if (Data[i,"vl"]>0) {Min="vl"} else if (Data[i,"l"]>0) {Min="l"} else if (Data[i,"n"]>0) {Min="n"} else if (Data[i,"h"]>0) {Min="h"} else if (Data[i,"vh"]>0) {Min="vh"} else if (Data[i,"xh"]>0) {Min="xh"} else {Min="?"} if (Data[i,"xh"]>0) {Max="xh"} else if (Data[i,"vh"]>0) {Max="vh"} else if (Data[i,"h"]>0) {Max="h"} else if (Data[i,"n"]>0) {Max="n"} else if (Data[i,"l"]>0) {Max="l"} else if (Data[i,"vl"]>0) {Max="vl"} else if (Data[i,"xl"]>0) {Max="xl"} else {Max="?"} Amount=-1; Mode="?" if (Data[i,"xh"]>=Amount) {Mode="xh"; Amount=Data[i,"xh"]} if (Data[i,"vh"]>=Amount) {Mode="vh"; Amount=Data[i,"vh"]} if (Data[i,"h"]>=Amount) {Mode="h"; Amount=Data[i,"h"]} if (Data[i,"n"]>=Amount) {Mode="n"; Amount=Data[i,"n"]} if (Data[i,"l"]>=Amount) {Mode="l"; Amount=Data[i,"l"]} if (Data[i,"vl"]>=Amount) {Mode="vl"; Amount=Data[i,"vl"]} if (Data[i,"xl"]>=Amount) {Mode="xl"; Amount=Data[i,"xl"]} if (Min!="?" && Mode!="?" && Max!="?") { print ColName[i],Min,Mode,Max; } } } #example default file #ksloc,7,94,418 #rely,n,h,vh #data,l,l,n #cplx,n,h,xh #time,n,n,h #stor,n,n,h #virt,l,n,h #turn,l,l,l #acap,n,n,vh #aexp,l,n,vh #pcap,n,n,vh #vexp,vl,n,h #lexp,vl,n,h #modp,n,h,vh #tool,h,h,h #sced,n,n,n