我有这种输入:
rs10000004 C T 4 rs10000004 0 75625312 C C C C T 0 C T
rs10000005 G A 4 rs10000005 0 75625355 G 0 A A A G A A
如果列中的值与第二个字段 $2 相同,我想用“A”替换从 8 到结尾的列,如果该值与第三个字段 $3 相同,我想用“B”替换。否则,将按原样打印该值(某些列中的值应为零)
预期产出
rs10000004 C T 4 rs10000004 0 75625312 A A A A B 0 A B
rs10000005 G A 4 rs10000005 0 75625355 A 0 B B B A B B
我尝试了以下方法,但它没有给我任何结果,只是空行。改进我的代码比向我展示使用 awk 以外的其他东西的新解决方案更好
cat input | awk '{ for(i=8; i<=NF; i++) { if($i == $2) $i="A"; else if($i == $3) $i="B"; else $i == 0; } print $i }'
提前致谢