CSVをhtmlに変換するために条件付きカラーエンコーディングを作成してmain.awk
使用しました。color.awk
スクリプトは機能しますが、問題は条件が満たされると、行全体(すべての列)に色が付けられることです。
enir行(すべての列ではない)ではなく、条件を確認するために使用されるその列の背景色のみを変更したいと思います。
コマンドは次のように実行されます。
awk -f color.awk -f main.awk employee_data.csv >> employee_data.html
1)私のcolor.awkは以下のようになります。 $ 1は、カラー値をmain.awkに返す値に基づく最初の列です。
function check() {
if (( $1 = 8613)) return "green"
if (( $1 > 8613)) return "red"
if (( $1 < 8613)) return "red"
}
2)私のmain.awkは次のようになります
main.awkはこの行を使用してcheck関数を呼び出してcolor.awkから色を取得します。 color = check();完全なスクリプトは次のとおりです。
BEGIN{
FS="|"
print "<html><body>"
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>"
for ( i = 1; i < NF; i++ ) {
color=check( );
print "<td bgcolor=\""color"\"><b><FONT FACE=\"verdana\" SIZE=2>"$i"</b></FONT></td>"
#print "<td ><b><FONT bgcolor=\""color"\" FACE=\"verdana\" SIZE=2>"$i"</b></FONT></td>"
}
print "</tr>"
}
END {
print "</table></body></html>"
}
ベストアンサー1
チェック関数には列1がハードコードされているため、代わりにforループで
color=check( );
あなたはしなければなりません
color = i == i ? check() : "someDefaultColor"
または、i
検査関数(check(i)
)に渡された検査関数は、渡された値があるかどうかをテストします1
。