csv 파일(데이터베이스 쿼리로 생성됨)을 html로 변환하고 열 값을 기반으로 테이블 색상을 지정합니다.

csv 파일(데이터베이스 쿼리로 생성됨)을 html로 변환하고 열 값을 기반으로 테이블 색상을 지정합니다.

(셸 스크립트 사용) 데이터베이스 쿼리의 출력인 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.

관련 정보