AWK imprime campos específicos sem uma palavra específica

0

Entrada:

a-0;Password-1010;c-ss;d-fk;h-14;i-jawad;j-dd;[email protected];
a-7990:15:71;b-aa;c-1;Password-2020;h-iOS;[email protected];

Saída:

[email protected],1010
[email protected],2020

meu arquivo de entrada é o mesmo do meu exemplo. Gostaria de imprimir apenas o Email e Password diretamente com o separador , .

cada linha no arquivo contém palavras estáveis de ;Email- e ;Password-

Eu tentei com awk -F';' '{ print $8, $2 }' , mas não vai dar o meu alvo, porque é necessário algumas modificações.

    
por αԋɱҽԃ αмєяιcαη 28.11.2018 / 01:15

1 resposta

1

Como as saídas desejadas não estão consistentemente no mesmo campo em cada linha, sugiro looping em campos, tentando substituir os prefixos Email- e Password- e registrando o resultado se a substituição for bem-sucedida:

awk '
  BEGIN {
    FS=";"; OFS=",";
  }
  {
    for (i=1;i<=NF;i++) {
      if (sub(/^Email-/,"",$i))
        e = $i; 
      else if (sub(/^Password-/,"",$i)) 
        p = $i;
     }
     print e, p
  }' file
[email protected],1010
[email protected],2020
    
por 28.11.2018 / 01:41