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;iawk'
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