# | スクリプト | 解説 | |
---|---|---|---|
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 | }' $* | # |
$ 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 |