home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / qtawk / table.exp < prev    next >
Text File  |  1990-02-10  |  809b  |  33 lines

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