2012-05-24 4 views
17

배시는 "else"에 화살표를 지정하고 도발적인 징징 이음에 "구문 오류"라고 말합니다.다른 문제가있는 경우 awk

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

이유는 무엇입니까?

답변

21

if 블록 주위에 중괄호를 쓰고 블록의 명령문 사이에 세미콜론을 쓰지 않아도됩니다.

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

는 여전히 0으로 나누기를 받고 코드를 시도는 – AWE

+2

@AWE을 시도 :'$ 4'는 내가 한 0 –

+0

인 처리하는 테스트를 추가, 나는 그것을 위해 awk가하고 아무튼 존재하지 않습니다. – AWE

2

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