file_2 の最初の 2 つの列一致に基づいて file_1 から行を抽出します。

file_2 の最初の 2 つの列一致に基づいて file_1 から行を抽出します。

ファイル1

##chr   pos rc  allele_count    allele_states   deletion_sum    snp_type    most_variable_allele    diff:1-2    diff:1-3    diff:1-4    diff:1-5    diff:1-6    diff:1-7    diff:1-8    diff:1-9    diff:1-10   diff:1-11   diff:1-12   diff:2-3
MT  227 C   2   C/A 0   pop C   0   0   0   0   0   0   0.024   0   0.022   0   0   0
MT  233 G   2   G/T 0   pop G   0   0.009   0   0.012   0   0   0   0   0   0   0   0.009
MT  245 G   2   G/A 0   pop A   0   0   0   0   0   0.055   0.224   0.072   0.026   0   0   0
MT  251 C   2   C/T 0   pop C   0.276   0.034   0.231   0.005   0.027   0.036   0.025   0.002   0.107   0.034   0.034   0.309
MT  264 G   2   G/C 0   pop G   0   0   0   0.008   0   0.003   0   0   0   0   0   0
MT  286 G   2   G/T 0   pop T   0.002   0.002   0.002   0.002   0.002   0.002   0.002   0.002   0.002   0   0.002   0
MT  292 A   2   A/T 0   pop T   0   0   0   0   0.003   0   0   0.002   0   0   0   0
MT  293 G   2   G/T 0   pop G   0   0   0   0   0.003   0.002   0   0   0   0   0   0
MT  295 G   2   G/T 0   pop G   0   0.002   0.002   0   0.001   0.002   0.002   0.002   0.002   0.002   0.002   0.003

ファイル_2

MT  251
MT  292
MT  295

希望の出力

##chr   pos rc  allele_count    allele_states   deletion_sum    snp_type    most_variable_allele    diff:1-2    diff:1-3    diff:1-4    diff:1-5    diff:1-6    diff:1-7    diff:1-8    diff:1-9    diff:1-10   diff:1-11   diff:1-12   diff:2-3
MT  251 C   2   C/T 0   pop C   0.276   0.034   0.231   0.005   0.027   0.036   0.025   0.002   0.107   0.034   0.034   0.309
MT  292 A   2   A/T 0   pop T   0   0   0   0   0.003   0   0   0.002   0   0   0   0
MT  295 G   2   G/T 0   pop G   0   0.002   0.002   0   0.001   0.002   0.002   0.002   0.002   0.002   0.002   0.003

これはこの記事で望むものと似ています。最初の列に基づいて2つのファイルを比較します。一致すれば行を維持

私は最初の列と重なる部分を維持しましたが、awk 'NR==FNR{a[$0]=$0;next}a[$0]'最初の2つの列(chrとpos)と一致する場合は行全体が必要です。

ベストアンサー1

フル行テストを使用する代わりに、最初の2つの列が配列のキーであることをテストする必要があります$0

awk 'NR==FNR {a[$1" "$2] = 1; next}
     FNR == 1 && FNR != NR {print} # print header
     $1" "$2 in a' File_2 File_1

おすすめ記事