34 lines
795 B
Plaintext
34 lines
795 B
Plaintext
|
# table - simple table formatter
|
||
|
|
||
|
BEGIN {
|
||
|
FS = "\t"; blanks = sprintf("%100s", " ")
|
||
|
number = "^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)$"
|
||
|
}
|
||
|
|
||
|
{ row[NR] = $0
|
||
|
for (i = 1; i <= NF; i++) {
|
||
|
if ($i ~ number)
|
||
|
nwid[i] = max(nwid[i], length($i))
|
||
|
wid[i] = max(wid[i], length($i))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
END {
|
||
|
for (r = 1; r <= NR; r++) {
|
||
|
n = split(row[r], d)
|
||
|
for (i = 1; i <= n; i++) {
|
||
|
sep = (i < n) ? " " : "\n"
|
||
|
if (d[i] ~ number)
|
||
|
printf("%" wid[i] "s%s", numjust(i,d[i]), sep)
|
||
|
else
|
||
|
printf("%-" wid[i] "s%s", d[i], sep)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function max(x, y) { return (x > y) ? x : y }
|
||
|
|
||
|
function numjust(n, s) { # position s in field n
|
||
|
return s substr(blanks, 1, int((wid[n]-nwid[n])/2))
|
||
|
}
|