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

ベストアンサー1

おすすめ記事