Linux에서 파일 1의 두 번째 열과 파일 2의 두 번째 열을 비교합니다.

Linux에서 파일 1의 두 번째 열과 파일 2의 두 번째 열을 비교합니다.

file1과 file2라는 두 개의 파일이 있습니다. 염색체 번호가 동일할 때 파일 1의 두 번째 열이 파일 2의 (두 번째 열 - 1,000)보다 크고 파일 2의 (두 번째 열 + 1,000)보다 작으면 네 번째 열을 출력한다고 가정하고 싶습니다. 열과 파일 1의 세 번째 열입니다.

파일 1(3개 열):

chr1 12000 1  
chr2 12700 2  
chr2 13000 0.5

파일 2(4열):

chr1 11869 14409 gene_id=ENSG00000223972  
chr1 11869 14409 gene_id=ENSG00000224000  
chr2 11869 12227 gene_id=ENSG00000300000  
chr2 12613 12721 gene_id=ENSG00000270000  
chr2 13221 14409 gene_id=ENSG00000400000

출력(2열):

gene_id=ENSG00000223972  1  
gene_id=ENSG00000270000  2  
gene_id=ENSG00000400000  0.5

나는 시도했다:

awk 'NR==FNR{a[$1]=$1;next}{if ((a[$2]>$2-1000) && (a[$2]<$2+1000)){print $4, a[$3]}}' file1 file2

하지만 나는 아무것도 얻지 못했습니다.

Linux에서 원하는 출력을 빠르게 얻는 방법은 무엇입니까?

관련 정보