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
.