값 범위에 따른 데이터 변환 선택

값 범위에 따른 데이터 변환 선택

3개의 데이터 열이 포함된 텍스트 파일이 있습니다. 그러나 서로 다른 파일에서 임의의 시간에 관찰된 단위가 ppn에서 ppb로 변경되므로 변환 계수와 1000 곱셈이 필요합니다.

actual data                        needed data look
20101001,01:00,0.3                 20101001,01:00,0.3,300.000
20110103,10:00,212.67              20110103,10:00,212.670,212.670

원본 내용을 모두 인쇄하고 변환을 위해 네 번째 열을 추가하는 awk 명령이 있습니다.

유일한 문제는 세 번째 열의 모든 내용을 1000으로 인쇄한 다음 네 번째 열에 인쇄한다는 것입니다. 명령은 다음과 같습니다.

awk -F ',' '{printf "%s %s %.3f %.3f\n", $1,$2,$3,$3*1000}' temp7.tmp > County001-CO-0012.out

어떻게 하면 3열의 2와 -1 사이의 값에 1000을 곱한 다음 4열의 3열의 원래 값을 인쇄할 수 있나요?

답변1

awk 코드에서 이 작업을 수행할 수 있습니다.

{
    # if $3 is between -1 and 2, multiply by 1000
    converted = $3 * (-1 <= $3 && $3 <= 2 ? 1000 : 1)
    printf "%s %s %.3f %.3f\n", $1, $2, $3, converted
}

관련 정보