두 데이터 세트의 데이터 병합

두 데이터 세트의 데이터 병합

두 개의 데이터세트를 병합하려고 합니다.

파일 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

관련 정보