Di 'che ho un file:
PRO 1
GLN 5.55112e-17
ILE -6.245e-17
THR 5.55112e-17
Voglio che ogni riga che abbia un numero diverso da 1 nella seconda colonna lo cambi in 0 e mantenga il resto.
Se uso if
(cioè un'istruzione condizionale), va tutto bene:
awk '{if($2!=1){print $1,"0"}else{print $0}}' file
PRO 1
GLN 0
ILE 0
THR 0
Ma quando uso il blocco condizionale, succede qualcosa di indesiderato:
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
Puoi vedere cosa c'è che non va.
- Come posso correggere questo errore?
- Perché si verifica questo errore?
- Qual è la differenza tra un'istruzione condizionale e un blocco condizionale?
awk '$2!=1?$2=0:"";1' file
.