home *** CD-ROM | disk | FTP | other *** search
- # table - simple table formatter
- # AWK Page 98
- #
- BEGIN {
- FS = /\t/;
- # blanks = copies(" ",100);
- number = /{_i}/; # use pre-defined
- }
- {
- 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));
- return s copies(" ",int((wid[n] - nwid[n])/2));
- }
-