Digamos que tengo un archivo:
PRO 1
GLN 5.55112e-17
ILE -6.245e-17
THR 5.55112e-17
Quiero que cada línea que tenga un número desigual a 1 en la segunda columna cambie a 0 y conserve el resto.
Si uso if
(es decir, declaración condicional), todo está bien:
awk '{if($2!=1){print $1,"0"}else{print $0}}' file
PRO 1
GLN 0
ILE 0
THR 0
Pero cuando uso el bloque condicional, sucede algo no deseado:
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
Puedes ver lo que está mal.
- ¿Cómo soluciono este error?
- ¿Por qué ocurre este error?
- ¿Cuál es la diferencia entre una declaración condicional y un bloque condicional?
awk '$2!=1?$2=0:"";1' file
.