chr:pos1:pos2 Sun NC S1 S2 S3 S4 S9 S11 S14 S15 S16 S17 S18 S19 S28 S29 S30 S33 S34 S35 S36 S37 S38 S39
Aradu.A01:100145549:100145556 AG AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
Aradu.A01:100408119:100408137 CA TA 0 0 0 TA TA TA TA TA TA TA TA TA TA TA TA TA TA TA TA 0
Aradu.A01:10102206:10102212 TG TA TA TA TA 0 TG TA TA TA TG TG TG TG TG TA TG TG TA 0 TG TG
Aradu.A01:10112010:10112029 GA GG GG GG GG GG GA GG GG GG GA 0 GA GA GA GG GA GA GG GA 0 GA
Aradu.A01:10112029:10112059 AC GC GC GC GC GC AC GC GC GC AC 0 AC AC AC GC AC 0 GC AC 0 AC
Aradu.A01:101198026:101198058 GT GC GC GC GT GC 0 GT GT GC GT GT GT 0 GT GC GT GC GC GT 0 GT
Aradu.A01:101198058:101198081 TC CC CC CC TC CC 0 TC TC CC TC TC TC 0 TC CC TC CC CC TC 0 TC
Aradu.A01:101306922:101306946 AG AA AA AA AG 0 AA AG AG AA 0 AG AG AG AG AA AG AG AA AG AG AG
指定されたファイルで、4列から2列と3列までのすべてのフィールドの値を一致させようとしています。フィールド値(列4以上)が列2フィールドと一致する場合は、列3でS(一致する場合)としてマークし、Nとしてマークし、0の場合は-1を割り当てます。
私が試したことは次のとおりです。
NR>1 {for(i=4;i<=NF;i++)
{ if ( $i == $2 ) $i=S ;
if ( $i == $3 ) $i=N ;
if ( $i == 0 ) $i=-1 ;
} ## if ;
## for loop is done
print ;
}
その結果、最初の3つのフィールドを除くすべてのフィールドに-1が割り当てられます。
ベストアンサー1
これはトリックを行うようです
NR > 1 {
for( i=4; i<NF; i++) {
if( $i == $2 ) {
$i = "S"
}
else if( $i == $3 ) {
$i = "N"
}
else if( $i == 0 ) {
$i = -1
}
}
print
}
egというファイルに入れて、363142.awk
以下を実行してください。
$ awk -f 363142.awk /path/to/input