我正在尝试合并两个数据集......
文件 1 是单列
JDay list 1 to 366
文件 2 有 3 列
2002 1 9.5938
2002 2 9.5938
2002 3 -28672.0000
2002 5 -28672.0000
有时会丢失数据,如文件 2 示例中所示,其中缺少 JDAY 4。我希望将这两个文件放在一起,匹配正确的 JDAY 标志并打印数据。另外,鉴于缺失数据标志为 -9999,我还希望有任何缺失的 JDAYS,以便了解缺失了哪些天。
新文件应该如下所示......
2002 1 9.5938
2002 2 9.5938
2002 3 -28672.0000
2002 4 -9999
2002 5 -28672.0000
谢谢
答案1
这应该有效
创建一个文件merge.awk
,其中包含以下代码
BEGIN{
getline<ARGV[1]; l=$3; r=$5; ARGV[1]=""
}
$1 != year { if (x) while(x <= r) print year, x++, -9999
year=$1
x=l
}
$2 < l{
print
next
}
{
while($2 > x) print year, x++, -9999
print
++x
next
}
$2 > r{
while(x <= r) print year, x++, -9999
print
next
}
END{
while(x <= r) print year, x++, -9999
}
其次是
awk -f merge.awk file1 file2