Como muitas outras linguagens de programação, awk faz distinção entre expressões e instruções. Em geral, as declarações são ações executadas, enquanto expressões são cálculos que resultam em um valor.
O operador ternário em awk , como sua contraparte em C de onde vem, é em si uma expressão (não uma declaração) que espera outras três expressões como expr1 ? expr2 : expr3 . print é uma declaração. Não pode ser usado onde uma expressão é chamada, daí o erro de sintaxe.
Você já tentou awk 'BEGIN {a = 5;b=6; print (a==b)? "a==b" : "a!=b"}' ?
O uso de uma instrução em que uma expressão é chamada não pode fazer sentido. Declarações não retornam valores. Então, quando você tem condition ? stmt1 : stmt2 , qual é o valor computado pelo operador ternário? Se condition for falso, deve ser o valor de stmt2 , mas isso não é um valor, é uma ação.