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 |