2012-05-24 39 views
17

Bash chỉ một mũi tên đến "else" và nói "lỗi cú pháp" trong giai điệu rên rỉ khiêu khích.Xáo trộn nếu có vấn đề khác

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

Tại sao?

Trả lời

21

Bạn quên dấu ngoặc ôm xung quanh khối nếu và dấu chấm phẩy giữa các câu lệnh trong khối.

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

Tuy nhận được phép chia cho không cố gắng – AWE

+2

@AWE: Thêm một thử nghiệm để đối phó với '$ 4' là 0. –

+0

tôi đã làm, sau đó tôi awk cho nó và nó doesn không tồn tại. – AWE

2

Hãy thử mã

awk '{s=($3==0)?"-":$3/$4; print s}' 
Các vấn đề liên quan