如何合并来自具有不一致“日期时间”的不同文件的数据值?

问题描述

我必须将 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...