Precisa usar grep e ordenar por registros correspondentes e exibir Y e N

1

Arquivo de entrada (contém a coluna 1 com valor de repetição no número e a segunda coluna pode conter voz, e-mail, telefone, correio de voz):

123,voice
123, tel
324,voice mail
345,email
123,email

Arquivo de saída com cabeçalhos e Y necessários se tiverem algum valor na coluna dois a mais N

number,voice,voice mail,tel,email
123,Y,N,Y,N,Y
324,N,Y,N,N,N
345,N,N,N,N,Y
    
por user_tmo 05.11.2014 / 03:02

1 resposta

1

Uma solução Perl:

perl -F'\s*,\s*' -lane '
    BEGIN{ $outfile = "output_file_name";
           open $OUTFILE , ">" , $outfile
    }
    $h{$F[0]}{$F[1]}++;
    END{
        $i{$_}++ for map {keys $h{$_}} keys %h;
        print $OUTFILE "number,".join ",",sort keys %i;
        for $number (keys %h) {
           $string = "$number,";
           $string .= $h{$number}{$_} ? "Y," : "N," for keys %i;
           $string =~ s/,$//;
           print $OUTFILE $string
        }
    } ' input_file

Código testado e funciona com sua entrada de exemplo. Basta modificar output_file_name para ser o nome real que você deseja para o arquivo de saída.

Aviso

Isso irá destruir o arquivo de saída se ele existir. Se você preferir acrescentar, altere ">" para ">>" na terceira linha.

    
por 05.11.2014 / 03:18