0

File_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

File_2

MT  251
MT  292
MT  295

desired_output

##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

It's similar to what was wanted in this post:Compare two files by first column. Keep rows if matching

I was using awk 'NR==FNR{a[$0]=$0;next}a[$0]' for keeping overlap with first column, but I need the entire row when they match the first two columns (chr and pos).

2

You should just test whether the first two columns are keys of the array, instead of testing the entire line with $0.

awk 'NR==FNR {a[$1" "$2] = 1; next}
     FNR == 1 && FNR != NR {print} # print header
     $1" "$2 in a' File_2 File_1
| improve this answer | |
  • Thanks! the column headers weren't added to the output, but that's trivial to do. – Age87 Dec 28 '18 at 23:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.