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
awk
Aradu.A03_val
列 4 と 5 の最初のヌクレオチドが異なる場合、スクリプトは 2 番目の列の出力を取得し、列 4 と 5 の
Aradu.A03_val
2 番目のヌクレオチドが異なる場合は 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列の値を配列の合計に分割しa1
(a2
たとえば、TA
4列の値が合計に分割されているT
)ペアでテストします。 2 つの配列の値が異なる場合、最初の列の文字列と列 2 または 3 の対応する値が下線で印刷されます。A
a1
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