Edited at

csvファイルからhtmlの表を作る

More than 5 years have passed since last update.

仕事で自動テストを利用しているのですが、結果が見にくかったので、シェルでhtml化する方法を調べてみました。テストの実行結果などが記載されているcsvファイルはあるとして、そのファイルを入力してhtmlの表を作る方法です。

下記のようなcsvファイルがあったとします。

項番,シナリオ名,テスト結果

1,test_1, OK
2,test_2, OK
3,test_3, NG
4,test_4, OK

下記スクリプトは、↑のようなcsvファイルを入力としてhtmlの表を出力します。

引数で指定されたcsvファイルの内容をhtml_bodyパラメータに設定して、cat以降でindex.htmlファイルへ出力しています。


sample.sh

#!/bin/sh

html_body="<table border=1>"
while read line; do
str="<tr>"
IFS=','
set -- $line
for col do
str="${str}<td>$col</td>"
done
str="${str}</tr>"
html_body="${html_body}${str}"
done < "$1"
html_body="${html_body}</table>"

cat << EOF > ./index.html
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" /></head>
<body>
$html_body
</body>
</html>
EOF


こんな感じのスクリプトを作っておくと、自動テストとかの結果も見やすくていいです。