csv를 html로 변환할 때 awk를 사용하여 한 열의 배경색을 변경하는 방법

csv를 html로 변환할 때 awk를 사용하여 한 열의 배경색을 변경하는 방법

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.

관련 정보