Next
| Prev|Index|凡例ソースリスト:cntr.c [source]
/* +--------------------------------------------+ */ /* |@(#) cntr: usage [width:-80] | */ /* +--------------------------------------------+ */ #include <stdio.h> #include <strings.h> #include <sys/types.h> #define BMAX 2048 #define WIDTH 80 char *verid = "%Z% VAU-1 cntr by ycos %I%"; /* Error message print */ /* erprint(prog, message), output stderr */ void erprt( char *prog, char *msg ) { fprintf(stderr,"\n%s:%s\n", prog, msg ); exit(1); } main( int argc, char *argv[] ) { FILE *ipt; /* Input file discripter */ int len, /* length of input line */ mgn, /* right mergin */ wid, /* output width */ i; char buf[BMAX]; /* I/O buffer per 1 line*/ /* Arguments check( none, width or width filename ) */ switch( argc ) { case 1: ipt = stdin; wid = WIDTH; break; case 2: ipt = stdin; wid = atoi( argv[1] ); break; case 3: ipt = fopen(argv[2], "r"); if( ipt == NULL ) erprt(argv[0],"input file error"); break; default: erprt(argv[0],"[ width [file name] ]"); break; } if( wid < 3 || wid > BMAX ) erprt(argv[0],"range check. width"); for(;;){ if( fgets(buf, BMAX, ipt ) == NULL ) break; len = strlen(buf); if( wid > len ) { mgn = (wid - len ) / 2; for(i=0;i<mgn;i++){ fputc(' ',stdout); } } fputs(buf,stdout); } }
スクリプト: htbl.ksh #! /bin/ksh # @(#) Create HTML table / usage [-d<DELIMITER>] FILES.. # DCHAR=" " while getopts :hd: n do case $n in d) DCHAR=$OPTARG ;; h) cat <<"EOF" >&2 $0 [-h][-d DELIMITER_CHAR ] FILES... EOF ;; ?) echo " unkown $n" ;; esac done shift OPTIND-1 gawk -F"$DCHAR" 'BEGIN{ print "<table border=1>" } function line() { print "<tr>" for(i=1;i<=NF;i=i+1) printf "<%s>%s</%s>\n", tag, $i, tag print "</tr>" } NR==1{ print "<tr>" for(i=1;i<=NF;i=i+1) printf "<%s>%s<%s>\n", "th", $i, "/th" print "</tr>" next } { print "<tr>" for(i=1;i<=NF;i=i+1) { if ( $i + 0 == $i ) { printf "<%s>%s<%s>\n", "td align=right", $i, "/td" } else { printf "<%s>%s<%s>\n", "td align=left", $i, "/td" } } print "</tr>" }END{ print "</table>" }' $*実行例
#,name,address 123,yamada,ayama@hoge.com 5,sato,eisaku.sato@sore.co.jp ↓1G!Ghtbl.ksh -d, <table border=1> <tr> <th>#</th> <th>name</th> <th>address</th> </tr> <tr> <td align=right>123</td> <td align=left>yamada</td> <td align=left>ayama@hoge.com</td> </tr> <tr> <td align=right>5</td> <td align=left>sato</td> <td align=left>eisaku.sato@sore.co.jp</td> </tr>
# | name | address |
---|---|---|
123 | yamada | ayama@hoge.com |
5 | sato | eisaku.sato@sore.co.jp |