Linux 如何用数字代码替换文件中的每两列(例如,第4列和第5列为1)?(awk)

Linux 如何用数字代码替换文件中的每两列(例如,第4列和第5列为1)?(awk),linux,awk,gsub,Linux,Awk,Gsub,我有一个以下格式的文件: probeset_id alleleA alleleB 562_201 562_201 562_202 562_202 562_203 562_203 562_204 562_204 562_205 562_205 562_206 562_206 562_207 562_207 562_208 562_208 562_209 562_209 562_258 562_258 AX-76431849 T C T T C T T T T T C C C T T C T T T

我有一个以下格式的文件:

probeset_id alleleA alleleB 562_201 562_201 562_202 562_202 562_203 562_203 562_204 562_204 562_205 562_205 562_206 562_206 562_207 562_207 562_208 562_208 562_209 562_209 562_258 562_258
AX-76431849 T C T T C T T T T T C C C T T C T T T C C T
AX-76431844 A G A A G A A A A A G G G A A G A A A G G A
AX-76431845 T C T T C T T T T T C C C T T C T T T C C T
我想用数字代码替换第4列到第20列!我想根据等位基因A和等位基因B列,用1个代码编号替换每2列

如果第4列和第5列中的字母类似于等位基因A(第2列),则将第4列和第5列替换为0,如果第4列中的字母类似于等位基因A(第2列),第5列中的字母类似于等位基因B(第3列),或者如果第4列中的字母类似于等位基因B(第3列)第5列中的字母类似于等位基因A(第2列),然后将第4列和第5列替换为1,如果第4列和第5列中的字母类似于等位基因B(第3列),则将第4列和第5列替换为2 所以我想要的输出是:

probeset_id alleleA alleleB 562_201 562_201 562_202 562_202 562_203 562_203 562_204 562_204 562_205 562_205 562_206 562_206 562_207 562_207 562_208 562_208 562_209 562_209 562_258 562_258
    AX-76431849 T C 0 1 0 0 2 1 1 0 1 1
    AX-76431844 A G 0 1 0 0 2 1 1 0 1 1
    AX-76431845 T C 0 1 0 0 2 1 1 0 1 1
我有以下代码:

awk 'NR == 1 { print; next } NR>1 {for (i=4;i<=NF;i++) if ( $i == $2) gsub ($i, 1 );for (i=4;i<=NF;i++) if ( $i == $3) gsub ($i, 2 );print}' input_test.txt > output_test.txt
awk'NR==1{print;next}NR>1{for(i=4;i
awk'
NR==1{
打印
下一个
}
{
对于(i=4;i单向:

script.awk的内容

FNR == 1 { 
    print
    next
}

FNR > 1 { 
    for ( i = 4; i <= NF; i += 2 ) { 
        if ( $i == $2 && $(i+1) == $2 ) { 
            value = 0 
        } else if ( $i == $3 && $(i+1) == $3 ) { 
            value = 2 
        } else {
            value = 1 
        }   

        $i = ""
        $(i+1) = value
    }   

    print
}
像这样运行:

awk -f script.awk infile
结果:

probeset_id alleleA alleleB 562_201 562_201 562_202 562_202 562_203 562_203 562_204 562_204 562_205 562_205 562_206 562_206 562_207 562_207 562_208 562_208 562_209 562_209 562_258 562_258
AX-76431849 T C  0  1  0  0  2  1  1  0  1  1
AX-76431844 A G  0  1  0  0  2  1  1  0  1  1
AX-76431845 T C  0  1  0  0  2  1  1  0  1  1
probeset_id alleleA alleleB 562_201 562_201 562_202 562_202 562_203 562_203 562_204 562_204 562_205 562_205 562_206 562_206 562_207 562_207 562_208 562_208 562_209 562_209 562_258 562_258
AX-76431849 T C T T C T T T T T C C C T T C T T T C C T
AX-76431844 A G A A G A A A A A G G G A A G A A A G G A
AX-76431845 T C T T C T T T T T C C C T T C T T T C C T
awk -f script.awk infile
probeset_id alleleA alleleB 562_201 562_201 562_202 562_202 562_203 562_203 562_204 562_204 562_205 562_205 562_206 562_206 562_207 562_207 562_208 562_208 562_209 562_209 562_258 562_258
AX-76431849 T C  0  1  0  0  2  1  1  0  1  1
AX-76431844 A G  0  1  0  0  2  1  1  0  1  1
AX-76431845 T C  0  1  0  0  2  1  1  0  1  1