2つのファイルがあります。
ファイル1:
Chromosome Position
Chr1 5242097
Chr1 4876397
Chr1 9474943
Chr1 8494518
Chr1 39872693
Chr1 9445153
Chr1 23044399
Chr1 8018859
Chr1 9474943
Chr1 42380010
Chr1 9474943
Chr1 22677151
Chr1 23044399
Chr1 42380010
ファイル2:
Chr1 1 0
Chr1 2 0
Chr1 3 0
Chr1 4 0
Chr1 5 0
Chr1 6 0
Chr1 7 0
Chr1 8 0
Chr1 9 0
Chr1 10 0
Chr1 11 0
Chr1 12 0
Chr1 13 0
Chr1 14 0
Chr1 15 0
Chr1 16 0
Chr1 17 0
Chr1 18 0
Chr1 19 0
Chr1 20 0
Chr1 21 0
Chr1 22 0
Chr1 23 0
Chr1 24 0
Chr1 25 0
Chr1 26 0
Chr1 27 0
Chr1 28 0
Chr1 29 0
Chr1 30 0
Chr1 31 0
Chr1 32 0
Chr1 33 0
Chr1 34 0
Chr1 35 0
Chr1 36 0
Chr1 37 0
Chr1 38 0
Chr1 39 0
Chr1 40 0
Chr1 41 0
Chr1 42 0
Chr1 43 0
Chr1 44 0
Chr1 45 0
Chr1 46 0
Chr1 47 0
Chr1 48 0
Chr1 49 0
Chr1 50 0
File2は容量がかなり大きく、全体の内容を示していません。この数字は6桁以上に増えることがあります。
file1の2番目の列と一致する場合は、file2から3番目の列を取得したいと思います。
私はPerlプログラムを書いたが、非常に遅かった。私はこれを行うための簡単な方法を探しています。 Grepも非常に遅いです。
ベストアンサー1
私は書くことができます
awk '
# store column 2 from the first file
NR == FNR {pos[$2] = 1; next}
# from the second file, print the 3rd field if it occurred in file1
$3 in pos {print $3}
' file1 file2