I have file1.gz
That looks like
NC_044998.1 4013 0 TT 2 GG 0 TT 0 TT 0 TT
NC_044998.1 4016 0 TT 0 TT 0 TT 2 GG 0 TT
NC_044998.1 4017 0 TT 0 TT 0 TT 0 TT 0 TT
NC_044998.1 4018 0 TT 0 TA 0 TT 0 TT 0 TT
NC_044998.1 4019 2 CC 2 CC 2 CC 2 CC 2 CC
I need to compare $1,$2, plus every letter in every other column in file1 ($1,$2,letter 1 of $4, then $1,$2, letter 2 of $4, then $1,$2,letter 1 of $6, then $1,$2,letter 2 of $6, and so on) to $1,$2,$5 of file2 bellow.
chromo position major minor ref anc knownEM nInd
NC_044998.1 4013 T G T T 0.000000 1
NC_044998.1 4016 G T G G 0.000000 1
NC_044998.1 4018 T A T T 0.000000 1
NC_044998.1 4019 G A G G 0.000000 1
NC_044998.1 3760 G A G G 0.000000 1
If there's a match add "ref" else add "dev". The result of each comparison can be appended to the last column, as in the output bellow.
NC_044998.1 4013 0 TT 2 GG 0 TT 0 TT 0 TT ref ref dev dev ref ref ref ref ref ref
NC_044998.1 4016 0 TT 0 TT 0 TT 2 GG 0 TT dev dev dev dev dev dev ref ref dev dev
NC_044998.1 4017 0 TT 0 TT 0 TT 0 TT 0 TT
NC_044998.1 4018 0 TT 0 TA 0 TT 0 TT 0 TT ref ref ref dev ref ref ref ref ref ref
NC_044998.1 4019 2 CC 2 CC 2 CC 2 CC 2 CC dev dev dev dev dev dev dev dev dev dev
Tried to solve in two steps
Splitting every other column
awk 'BEGIN {FS = OFS = "\t"} {for (i=4; i<=12; i+=2) {sub(/./,"&\t",$i)1;} print $0};' file1
And then trying to adapt an answer to a similar problem I had recently
| awk 'BEGIN {FS=OFS="\t"} FNR==NR {a[$1,$2,$5]; next} FNR==1 { next } {for (i=4; i<=12; i+=3) {print $0, (($1,$2,$4) in a ? "ref":"dev"), (($1,$2,$i + 1 ) in a ? "ref":"dev")}}' file2 -
It doesn't return any output