특정 범위에 속하는 값에 대해 해당 값을 가져옵니다.

특정 범위에 속하는 값에 대해 해당 값을 가져옵니다.

참조 파일의 입력 파일에서 값을 검색하고 참조 파일에서 해당 값을 얻으려면 awk를 사용할 생각입니다.

참조 파일과 입력 파일 모두 $3 및 $2를 기준으로 정렬할 수 있습니다(정렬하면 더 쉬울 것 같습니다). 참조 문서:

ID3  A    16553824    16561652    -1
ID4  A    22629640    22630440    -1
ID1  A    26607738    26607962    -1
ID2  A    28571020    28571736    -1

입력 파일:

A 16553900 16554000 -1
A 26607800 26607900 -1
A 28571050 28571100 -1

입력 $2를 참조 $3 및 $4와 비교하고 싶습니다. 참조 $3 < 입력 $2 < 참조 $3인 경우 해당 행은 입력 $5의 참조 $1에 할당됩니다. 그래서 그것은 다음과 같습니다:

원하는 출력:

A 16553900 16554000 -1 ID1
A 26607800 26607900 -1 ID3
A 28571050 28571100 -1 ID4

답변1

원하는 출력이 잘못된 것 같습니다.

awk '
    NR == FNR {min[$1]=$3; max[$1]=$4; next}
    {
        for (id in min) 
            if (min[id] < $2 && $2 < max[id]) {
                print $0, id
                break
            }
    }
' reference input
A 16553900 16554000 -1 ID3
A 26607800 26607900 -1 ID1
A 28571050 28571100 -1 ID2

관련 정보