列4と5の最初のnucが異なる場合、出力は最初のfield_secondフィールドです。列 4 と 5 の 2 番目のヌクレオチドが異なる場合、出力は最初の field_third フィールドです。

列4と5の最初のnucが異なる場合、出力は最初のfield_secondフィールドです。列 4 と 5 の 2 番目のヌクレオチドが異なる場合、出力は最初の field_third フィールドです。
Aradu.A03       9514    9527    CC      TC
Aradu.A03       15236   15265   CC      CT
Aradu.A03       36585   36621   TG      TA
Aradu.A03       36621   36666   GA      AA
Aradu.A03       42976   42981   CT      TC
Aradu.A03       63785   63843   GG      GT
Aradu.A03       63843   63852   GG      TG
Aradu.A03       79931   79958   CC      AC
Aradu.A03       102072  102077  GT      GC
Aradu.A03       102077  102085  TC      CA
Aradu.A03       102087  102095  CG      TG
Aradu.A03       102097  102106  CA      TA
Aradu.A03       102111  102115  TC      TT

awkAradu.A03_val列 4 と 5 の最初のヌクレオチドが異なる場合、スクリプトは 2 番目の列の出力を取得し、列 4 と 5 の Aradu.A03_val2 番目のヌクレオチドが異なる場合は 3 番目の列の出力を取得します。

答え1

$ awk '{ split($4, a1, ""); split($5, a2, ""); for (i in a1) { if (a1[i] != a2[i]) print $1 "_" $(i+1) }}' file
Aradu.A03_9514
Aradu.A03_15265
Aradu.A03_36621
Aradu.A03_36621
Aradu.A03_42981
Aradu.A03_42976
Aradu.A03_63843
Aradu.A03_63843
Aradu.A03_79931
Aradu.A03_102077
Aradu.A03_102085
Aradu.A03_102077
Aradu.A03_102087
Aradu.A03_102097
Aradu.A03_102115

スクリプトawkは、4列と5列の値を配列の合計に分割しa1a2たとえば、TA4列の値が合計に分割されているT)ペアでテストします。 2 つの配列の値が異なる場合、最初の列の文字列と列 2 または 3 の対応する値が下線で印刷されます。Aa1

2つのヌクレオチドが異なる場合、2行の出力が生成されます。

答え2

アッ解決策:

awk '{ r=$1"_"; if (substr($4,1,1) != substr($5,1,1)) print r$2; 
       else if (substr($4,2,1) != substr($5,2,1)) print r$3 }' file

出力:

Aradu.A03_9514
Aradu.A03_15265
Aradu.A03_36621
Aradu.A03_36621
Aradu.A03_42976
Aradu.A03_63843
Aradu.A03_63843
Aradu.A03_79931
Aradu.A03_102077
Aradu.A03_102077
Aradu.A03_102087
Aradu.A03_102097
Aradu.A03_102115

関連情報