definindo mais variáveis insite awk if? :

0

Eu recebo erro em um teste tão simples com duas variáveis:

$ echo test|awk '{$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}'
awk: cmd. line:1: {$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}
awk: cmd. line:1:                     ^ syntax error
awk: cmd. line:1: {$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}
awk: cmd. line:1:                                                         ^ syntax error
awk: cmd. line:1: {$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}
awk: cmd. line:1:                                                                ^ unterminated string
$

com variáveis simples, funciona bem:

$ echo test|awk '{$1 != ""? o="ABC" : o="123"}END{print "o:"o}'
o:ABC
$ echo test|awk '{$2 != ""? o="ABC" : o="123"}END{print "o:"o}'
o:123
    
por DonJ 22.03.2018 / 22:32

1 resposta

3

Você não pode fazer isso com o operador ? : , pois ele pode manipular apenas um único valor e duas atribuições gerariam dois valores.

Use uma declaração if real:

$ echo test|awk '{ if ($2 != "") { o="ABC"; r="123" } else { o="123"; r="ABC" }} END{ print "o:"o" r:"r}'
o:123 r:ABC
    
por 22.03.2018 / 22:46

Tags