Section Next | Prev


017 htbl - HTML テーブルタブの生成

概要
入力したテキストデータを HTML のタグ形式に変換する。

スクリプトと解説 - [text]
#スクリプト解説
1#! /bin/bash #
2# @(#) Create HTML table / usage [-d<DELIMITER>] FILES.. #
3# #
4DCHAR="," # 区切り記号の初期値設定
5while getopts :hd: n #
6do #
7        case $n in #
8        d) DCHAR=$OPTARG ;; # オプション d により区切り記号を変更。
9        h) cat <<"EOF" >&2 #
10         $0 [-h][-d DELIMITER_CHAR ] FILES... # オプション h はヘルプを表示。
11EOF #
12        exit 0 #
13                ;; #
14        ?) echo " unkown $n" ;; # 上記以外のオプションはエラー表示。
15        esac #
16done #
17let n=OPTIND-1 # オプション処理を行った引数の数を得る
18shift $n # オプション処理を行った引数を読み飛ばす
19 #
20awk -F"$DCHAR" 'BEGIN{ #
21        print "<table border=2>" # まず最初に table の開始を宣言
22} #
23function 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}' $* #

実行例
$ head -2 /etc/passwd | html -d: 
<table border=2>
<tr>
<th>root</th>
<th>x</th>
<th>0</th>
<th>0</th>
<th>root</th>
<th>/root</th>
<th>/bin/bash</th>
</tr>
<tr>
<td>bin</td>
<td>x</td>
<td>1</td>
<td>1</td>
<td>bin</td>
<td>/bin</td>
<td>/sbin/nologin</td>
</tr>
</table>
上記内容をブラウザで参照した場合
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin

Section Next | Prev