问题描述
我必须将 2 个文件与数据从 5 月到 9 月合并,为期 10 年。在第一个文件中,我有 30 分钟间隔的数据(两列 - 一个是日期时间),并且日期时间不一致。第二个文件的数据较少,但有 4 列 - 其中一个是 Datetime,因为它是 3 小时的时间段,Datetime 也是不一致的。到目前为止,我尝试了以下操作:
awk 'FNR==NR{A[$1]=$NF;next} FNR!=NR && FNR>1{Q=$1;$0=(Q in A)?$0 FS A[$1]:$0 FS;print;next} {print}' FS="\t" Synop.txt Gnss.txt > new.dat
但结果是我没有添加3列而是只有一列,否则我认为它与Datetime匹配。
示例如下:
文件 1:
Datetime IWV
2012-05-07 15:00:00 9.74
2012-05-07 15:30:00 9.84
2012-05-07 16:00:00 9.95
2012-05-07 16:30:00 10.11
2012-05-07 17:00:00 10.24
2012-05-07 17:30:00 10.37
2012-05-07 18:00:00 10.46
文件 2:
Datetime Phenomena Past_Phenomena_1 Precipitation_3h
2012-05-07 18:00:00 17 9 0.1
2012-05-08 15:00:00 29 9 0
2012-05-10 15:00:00 95 9 0
2012-05-22 15:00:00 95 9 0
2012-05-24 12:00:00 17 9 0
2012-06-01 15:00:00 17 9 0
2012-06-04 15:00:00 17 9 0
2012-06-05 06:00:00 17 9 4.2
2012-06-11 15:00:00 17 9 0
我想保留“IWV”数据和日期时间并添加(如果有)Phenomena,Past_Phenomena_1,Precipitation_3h。
预期结果:
2012-05-07 15:00:00 9.74
2012-05-07 15:30:00 9.84
2012-05-07 16:00:00 9.95
2012-05-07 16:30:00 10.11
2012-05-07 17:00:00 10.24
2012-05-07 17:30:00 10.37
2012-05-07 18:00:00 10.46 17 9 0.1
解决方法
awk 'BEGIN{ FS=OFS="\t" }
NR==FNR{ Q=$1; $1=""; Datetime[Q]=$0; next }
FNR>1 { print $0 Datetime[$1] }' file2 file1