두 개의 데이터세트를 병합하려고 합니다.
파일 1은 단일 열입니다.
JDay list 1 to 366
파일 2에는 3개의 열이 있습니다.
2002 1 9.5938
2002 2 9.5938
2002 3 -28672.0000
2002 5 -28672.0000
JDAY 4가 누락된 파일 2 예에 표시된 것처럼 데이터가 손실되는 경우도 있습니다. 이 두 파일을 함께 넣고 올바른 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