Linuxでは、ファイル1の2番目の列とファイル2の2番目の列を比較します。

Linuxでは、ファイル1の2番目の列とファイル2の2番目の列を比較します。

file1とfile2という2つのファイルがあります。染色体番号が同じ場合、ファイル1の2番目の列がファイル2の(2番目の列 - 1,000)より大きく、ファイル2の(2番目の列+ 1,000)より小さい場合は、4番目の列を出力すると仮定します。列とファイル 1 の 3 番目の列です。

ファイル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で目的の出力をすばやく取得するには?

ベストアンサー1

おすすめ記事