2012-05-24 20 views
17

Bash punta una freccia su "else" e dice "errore di sintassi" in un tono lamentoso provocatorio.Awk if else issues

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

Perché?

risposta

21

Hai dimenticato le parentesi attorno al blocco if e un punto e virgola tra le istruzioni nel blocco.

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

Ancora ottenere la divisione per zero tentato – AWE

+2

@AWE: Aggiungere un test a che fare con '$ 4' essere 0. –

+0

ho fatto, poi ho AWK per esso e doesn esiste – AWE

2

Prova il codice

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