Como imprimir campos ímpares de um arquivo de texto usando o awk no Unix? [fechadas]

1

Eu não consigo entender a resposta dada a ela, embora certamente isso ajude a cumprir minha exigência.

awk -F\| '{s="";for (i=1;i<=NF;i+=2) {s=s?s FS $i:$i} print s}' file

O que isso faz {s=s?s FS $i:$i} print s} ? Como imprime a saída exigida? Eu sei que é um operador ternário em uso. Mas como avalia a expressão e imprime a saída?

    
por recmach 11.11.2014 / 07:32

1 resposta

0

Pense nisso como se-então-else

 {s=s?s FS $i:$i} 

avalie para

 { if ( s != "" ) s=s FS $i ; ## i=3,5,7,...
   else s=$i ; } ## i=1

isso parece um código obscuro.

awk -F\| '{s="";for (i=1;i<=NF;i+=2) {s=s?s FS $i:$i} print s}' file

é equivalente a (mais fácil de entender)

awk -F\| '{s=$1;for (i=3;i<=NF;i+=2) {s=s FS $i} print s}' file
    
por 11.11.2014 / 08:25

Tags