awk

w awk, jak sprawdzić określoną wartość przed próbą obliczenia


Następna linia awk zakończy się niepowodzeniem, jeśli c15 jest niezdefiniowane lub równe 0. Jak to zmienić, aby w takich przypadkach nie próbował obliczać, ale zamiast tego wyświetlał komunikat o błędzie lub nic nie robił:
       cat formatted.dsv | awk -F"\t" '{ c12 = $12; c15 = $15; c17 = $17; c16 = $16; c4 = $4; c9 = $9; c5 = $5; c10 = $10; c14 = $14; c8 = $8; c7 = $7 } END { printf "%d\n", ((c12+c17+c16+c4+c9+c5+c10+c14+c8+c7))/c15)*1000 }'
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

jeśli zmienna nie jest zdefiniowana w
           awk(1)
http://linux.die.net/man/1/awk
wtedy ma domyślną wartość pustego łańcucha lub zero, w zależności od kontekstu. Myślę, że możesz tego użyć w ten sposób:
if (c15) printf "%d\n", ((c12+c17+c16+c4+c9+c5+c10+c14+c8+c7))/c15)*1000
else print "C15: null or empty\n"

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się