Is this a bug in original-awk, aka "The One True Awk" ?
I noticed in this one-liner if the conditional in the print statement
below lacks parentheses it produces and "illegal statement" error:
--
$ printf 'foo\n\nbar\n' |nawk '{print $0 != "" ? $0 : "[blank]"}'
nawk: syntax error at source line 1
context is
{print $0 >>> != <<<
nawk: illegal statement at source line 1
nawk: illegal statement at source line 1
--
Adding parentheses OR rewriting as a match fixes things:
--
$ printf 'foo\n\nbar\n' |nawk '{print $0 !~ /^$/ ? $0 : "[blank]"}'
foo
[blank]
bar
$ printf 'foo\n\nbar\n' |nawk '{print ($0 != "") ? $0 : "[blank]"}'
foo
[blank]
bar
--
Both mawk and gawk don't seem to care about lack of parentheses:
--
$ printf 'foo\n\nbar\n' |mawk '{print $0 != "" ? $0 : "[blank]"}'
foo
[blank]
bar
$ printf 'foo\n\nbar\n' |gawk '{print $0 != "" ? $0 : "[blank]"}'
foo
[blank]
bar
--
Note 'nawk' here is NOT gawk, it's a more recent version of original-awk:
$ nawk --version # from
https://github.com/onetrueawk/awk
awk version 20240122
$ original-awk --version # version Debian apt currently has
awk version 20220912
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)