2012-05-24 19 views
17

Bashは矢印を "else"にして、挑発的なうずまき音で "syntax error"と言います。それ以外の場合はawk

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

なぜですか?

答えて

21

ブロック内のステートメント間にセミコロンとセミコロンを入れています。

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

コードを試してみては – AWE

+2

@AWEを試みた:その後、私はそれのためにawkは、それはdoesnの '$ 4'は私がやった0 –

+0

ことに対処するためのテストを追加します。存在しない。 – AWE

2

それでもゼロ除算を取得

awk '{s=($3==0)?"-":$3/$4; print s}' 
関連する問題