gawk - Confusion about conditional expression in AWK -
here input file:
$ cat abc 0 1 2 3 4 5 why following give one-column output instead of two-column one?
$ cat abc | awk '{ print $1==0?"000":"111" $1==0? "222":"333" }' 000 333 333 shouldn't output following?
000 222 111 333 111 333
i think awk going parse as:
awk '{ print ($1==0) ? "000" : (("111" $1==0) ? "222" : "333") }' that is, when prints 3 zeros, doesn't consider rest of operation. , when doesn't print 3 zeros, prints triple threes because "111" concatenated string not going evaluate zero.
you want use:
awk '{ print ($1==0?"000":"111"), ($1==0? "222":"333") }' where comma puts space (ofs or output field separator, precise) in output between 2 strings. or might prefer:
awk '{ print ($1==0?"000":"111") ($1==0? "222":"333") }' which concatenates 2 strings no space.
Comments
Post a Comment