Digamos que eu tenho um arquivo:
PRO 1
GLN 5.55112e-17
ILE -6.245e-17
THR 5.55112e-17
Eu quero que cada linha que tenha um número diferente de 1 na segunda coluna mude para 0 e mantenha o resto.
Se eu usar if
(ou seja, declaração condicional), está tudo bem:
awk '{if($2!=1){print $1,"0"}else{print $0}}' file
PRO 1
GLN 0
ILE 0
THR 0
Mas quando eu uso o bloco condicional, algo indesejado acontece:
awk '$2!=1 {print $1,"0"} {print $0}' file
PRO 1
GLN 0
GLN 5.55112e-17
ILE 0
ILE -6.245e-17
THR 0
THR 5.55112e-17
Você pode ver o que está errado.
- Como corrijo esse erro?
- Por que esse erro ocorre?
- Qual é a diferença entre uma declaração condicional e um bloco condicional?
awk '$2!=1?$2=0:"";1' file
.