2012-05-24 14 views
17

Bash apunta una flecha hacia "else" y dice "error de sintaxis" en un tono provocativo quejándose.Awk if else issues

awk '{if($3 != 0) a = ($3/$4) print $0, a; else if($3==0) print $0, "-" }' file > out 

¿Por qué?

Respuesta

21

Olvidó llaves alrededor del bloque if, y un punto y coma entre las instrucciones en el bloque.

awk '{if($3 != 0) {a = ($3/$4); print $0, a;} else if($3==0) print $0, "-" }' file > out 
+0

Aún así conseguir la división por cero intentaron – AWE

+2

@AWE: Añadir una prueba para lidiar con '$ 4'siendo 0. –

+0

lo hice, entonces yo AWK para ello y que doesn existo – AWE

2

Pruebe el código

awk '{s=($3==0)?"-":$3/$4; print s}'