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에서 원하는 출력을 빠르게 얻는 방법은 무엇입니까?