| # | スクリプト | | 解説 |
| 1 | #! /bin/bash
| | # |
| 2 | # @(#) Create HTML table / usage [-d<DELIMITER>] FILES..
| | # |
| 3 | #
| | # |
| 4 | DCHAR=","
| | # 区切り記号の初期値設定 |
| 5 | while getopts :hd: n
| | # |
| 6 | do
| | # |
| 7 | case $n in
| | # |
| 8 | d) DCHAR=$OPTARG ;;
| | # オプション d により区切り記号を変更。 |
| 9 | h) cat <<"EOF" >&2
| | # |
| 10 | $0 [-h][-d DELIMITER_CHAR ] FILES...
| | # オプション h はヘルプを表示。 |
| 11 | EOF
| | # |
| 12 | exit 0
| | # |
| 13 | ;;
| | # |
| 14 | ?) echo " unkown $n" ;;
| | # 上記以外のオプションはエラー表示。 |
| 15 | esac
| | # |
| 16 | done
| | # |
| 17 | let n=OPTIND-1
| | # オプション処理を行った引数の数を得る |
| 18 | shift $n
| | # オプション処理を行った引数を読み飛ばす |
| 19 |
| | # |
| 20 | awk -F"$DCHAR" 'BEGIN{
| | # |
| 21 | print "<table border=2>"
| | # まず最初に table の開始を宣言 |
| 22 | }
| | # |
| 23 | function line()
| | # 関数の定義 |
| 24 | {
| | # |
| 25 | print "<tr>"
| | # 行の開始を tr タグで宣言 |
| 26 | for(i=1;i<=NF;i=i+1) printf "<></>\n",
| | # 要素数分だけ th/td タグを繰り返す |
| 27 | tag, $i, tag
| | # tr/td はこの関数を呼び出す前に定義済(tag) |
| 28 | print "</tr>"
| | # |
| 29 | }
| | # |
| 30 | {
| | # |
| 31 | if (NR==1) tag="th"
| | # 最初の行は th タグを用いる。 |
| 32 | else tag="td"
| | # それ以外は td タグを用いる。 |
| 33 | line()
| | # 関数 line() で1行分の処理を行う。 |
| 34 | }END{
| | # |
| 35 | print "</table>"
| | # ファイルを読み終わったら table タグを閉じる |
| 36 | }' $*
| | # |