If Else em Gawk

0

Eu tenho um exemplo:

echo $(seq 9) | awk '{for(i=1;i<=NF;i++) if(i!=5&&i!=6) {printf "%s ",i}else{printf "%s ",""} print ""}'
1 2 3 4   7 8 9 

É possível usar a abreviação desse comando?

echo $(seq 9)| awk '{for(i=1;i<=NF;i++) (i!=5&&i!=6) ? {printf "%s ",i} : {printf "%s ",""} print ""}'

Obrigado pela explicação.

    
por nowy1 16.12.2012 / 17:00

1 resposta

5

Possível, mas não desse jeito. Você tem que fornecer expressões para o operador ternário. Em AWK printf é uma declaração, então você não pode usá-la lá, assim como você não pode ter {} .

Como você não precisa de duas declarações printf , é melhor escrever assim:

seq -s ' ' 9 | awk '{for(i=1;i<=NF;i++) printf "%s ", i!=5&&i!=6 ? i : ""; print ""}'
    
por 16.12.2012 / 17:10

Tags