1*23f24377SWarner Losh# table - simple table formatter 2*23f24377SWarner Losh 3*23f24377SWarner LoshBEGIN { 4*23f24377SWarner Losh FS = "\t"; blanks = sprintf("%100s", " ") 5*23f24377SWarner Losh number = "^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)$" 6*23f24377SWarner Losh} 7*23f24377SWarner Losh 8*23f24377SWarner Losh{ row[NR] = $0 9*23f24377SWarner Losh for (i = 1; i <= NF; i++) { 10*23f24377SWarner Losh if ($i ~ number) 11*23f24377SWarner Losh nwid[i] = max(nwid[i], length($i)) 12*23f24377SWarner Losh wid[i] = max(wid[i], length($i)) 13*23f24377SWarner Losh } 14*23f24377SWarner Losh} 15*23f24377SWarner Losh 16*23f24377SWarner LoshEND { 17*23f24377SWarner Losh for (r = 1; r <= NR; r++) { 18*23f24377SWarner Losh n = split(row[r], d) 19*23f24377SWarner Losh for (i = 1; i <= n; i++) { 20*23f24377SWarner Losh sep = (i < n) ? " " : "\n" 21*23f24377SWarner Losh if (d[i] ~ number) 22*23f24377SWarner Losh printf("%" wid[i] "s%s", numjust(i,d[i]), sep) 23*23f24377SWarner Losh else 24*23f24377SWarner Losh printf("%-" wid[i] "s%s", d[i], sep) 25*23f24377SWarner Losh } 26*23f24377SWarner Losh } 27*23f24377SWarner Losh} 28*23f24377SWarner Losh 29*23f24377SWarner Loshfunction max(x, y) { return (x > y) ? x : y } 30*23f24377SWarner Losh 31*23f24377SWarner Loshfunction numjust(n, s) { # position s in field n 32*23f24377SWarner Losh return s substr(blanks, 1, int((wid[n]-nwid[n])/2)) 33*23f24377SWarner Losh} 34