열 4와 5의 첫 번째 nuc가 다른 경우 출력은 첫 번째 field_second 필드입니다. 열 4와 5의 두 번째 뉴클레오티드가 다른 경우 출력은 첫 번째 field_third 필드입니다.

열 4와 5의 첫 번째 nuc가 다른 경우 출력은 첫 번째 field_second 필드입니다. 열 4와 5의 두 번째 뉴클레오티드가 다른 경우 출력은 첫 번째 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의 첫 번째 뉴클레오티드가 서로 다른 경우 스크립트는 두 번째 열의 출력을 가져오고, Aradu.A03_val열 4와 5의 두 번째 뉴클레오티드가 서로 다른 경우 세 번째 열의 출력을 가져옵니다.

답변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예를 들어 TA4열의 값이 합계로 분할됨 T) 쌍별로 테스트합니다. 두 배열의 값이 다른 경우 첫 번째 열의 문자열과 열 2 또는 3의 해당 값이 밑줄로 인쇄됩니다.Aa1

두 뉴클레오티드가 다르면 두 줄의 출력이 생성됩니다.

답변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

관련 정보