(シェルスクリプトを使用)データベースクエリの出力であるCSVファイルからhtmlレポートを生成し、列の値に基づいて色を指定する必要があります。たとえば、特定のCSVファイルの「status%」列の下のセルが80未満の場合は、赤の背景で強調表示され、90より大きいものは緑で強調表示されます。 awkを使ってみましたが、forループをめちゃくちゃにしました。
CSVファイルは次のとおりです。
Status%,Status Message,date 0f examination,type of exam,subject
75, success, 13-09-2013,mid term,physics
90, success, 15-09-203, mid term, Maths
100, success, 17-09-2013, term, biology
100, success, 17-09-2013, term, SST
コードを追加
awk '
BEGIN {
print "<html><body></br></br>The report provides overall Percentage Secured in the given subjects.</br></br></br>"
print "<table border=1 cellspacing=1 cellpadding=1>"
}
{
print "<tr>"
for ( i = 1; i <= NF; i++ )
{
if ($i <=75 )
print "<td> <b><FONT COLOR=RED FACE="verdana"SIZE=2 ></b>" $i "</td>"
else
if ($i >=90 && $i =100)
print "<td> <b><FONT COLOR=GREEN FACE="verdana"SIZE=2 ></b>" $i "</td>"
else
print "<td> <FONT COLOR=YELLOW FACE="verdana"SIZE=2 >" $i "</td>"
print "</tr>"
}
END { print "</table></body></html>"
}
' /Reports/output/Output.html | sendmail -t
答え1
起動は良かったがタグを閉じないなど、いくつかの基本的なHTMLエラーが発生しました<FONT>
。スクリプトでこれを使用すると、awk
必要なものに近づくことができます。
BEGIN {
print "<html><body></br></br>The report provides overall Percentage Secured in the given subjects.</br></br></br>"
print "<table border=1 cellspacing=1 cellpadding=1>"
}
NR==1 {
# Header row
print "<tr>"
for ( i = 1; i <= NF; i++ ) {
print "<td><b>"$i"</b></td>"
}
print "</tr>"
}
NR>1 {
# Data rows
print "<tr>"
color="RED"
if( $i > 80 ) {
color="YELLOW"
}
if( $i > 90 ) {
color="GREEN"
}
print "<td><b><FONT COLOR=\""color"\" FACE=\"verdana\" SIZE=2>"$1"</b></FONT></td><td>"$2"</td><td>"$3"</td><td>"$4"</td><td>"$5"</td>"
print "</tr>"
}
END {
print "</table></body></html>"
}
そのままインラインで実行するか、独自のファイルに入れることができますreportgen.awk
。awk -f reportgen.awk /path/to/inputfile > outputfile.html