awk의 데이터를 올바르게 일치시키고 알려진 날짜/시간 파일을 기반으로 누락된 데이터를 채우는 방법

awk의 데이터를 올바르게 일치시키고 알려진 날짜/시간 파일을 기반으로 누락된 데이터를 채우는 방법

2002년 1월 1일 00:00부터 19년 12월 31일 23:00까지 진행되는 데이터 연구가 있습니다. 모든 위치의 시간 범위가 동일하지는 않으므로 데이터 처리를 더 쉽게 하기 위해 누락된 날짜 YYYYMMDD 및 HH:MM 시간을 채우는 스크립트가 있습니다. 우연히 스크립트가 데이터를 정확하게 전송하지 않는다는 것을 알게 되었습니다. 이 데이터를 처리하기 위해 awk 스크립트를 사용하고 있습니다. 다음은 데이터 입력 예입니다.

01:00,20020101,0.003
02:00,20020101,0.002
03:00,20020101,0.003
04:00,20020101,0.002
05:00,20020101,0.001

그런 다음 temp1.tmp에 입력하면 올바른 값이 표시됩니다.

20020101 0.003
20020101 0.002
20020101 0.003
20020101 0.002
20020101 0.001

그러나 temp1에서 누락된 데이터를 식별하고 올바른 날짜/시간 행과 일치시키기 위해 열 1을 일치시키려고 하면 temp2.​​tmp 파일은 다음을 제공합니다.

20020101 0.013
20020101 0.013
20020101 0.013
20020101 0.013
20020101 0.013

이 값은 정확하지도 않습니다. 0.013 데이터 포인트는 09:00 측정까지 나타나지 않습니다. 어떤 제안이라도 이 스크립트에 매우 도움이 될 것입니다. 감사해요

#Print the column information
awk -F ',' '{print $2,$3}'  County081-O3-0124.txt > temp1.tmp
awk  'NR==FNR {missing[$1]=$2} NR>FNR {printf("%s %s\n",$1,missing[$1]);}' temp1.tmp 2002-2019yyyymmdd.txt > temp2.tmp
# Print data column for MODIS data
awk '{print $2}' temp2.tmp > temp3.tmp
# Fill blank data spots with missing data flag of -99
awk '{print NF?$1:blankrow}' blankrow=-999 temp3.tmp > temp4.tmp
        cp 2002-2019yyyymmdd-hhmm.txt  temp5.tmp
        paste temp5.tmp temp4.tmp > temp6.tmp
#    sed -i 's/-28672.0000/-999/g' temp6.tmp
#    sed -i 's/0.0000/-999/g' temp6.tmp
#    sed -i 's/-999000/-999/g' temp6.tmp
    sed -i 's/\t/,/g' temp6.tmp
     mv temp6.tmp test.out

관련 정보