Ir para conteúdo
Fórum Script Brasil

eolocos

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que eolocos postou

  1. Olá, preciso de ajuda para modificar um script em perl, que gera tabelas baseado na contagem de elementos de colunas de um arquivo de entrada qualquer. o script, faz a contagem e organiza, mas não consigo modifica-lo para escrever a saída como desejo, para usar tal como entrada no gnuplot e criar os histogramas que preciso nas minhas pesquisas; o arquivo de entrada tem o seguinte formato ( input.txt ) 14 11 22 20 15 06 25 23 29 09 10 10 27 31 10 06 31 02 31 06 13 17 26 29 25 15 23 18 04 27 03 23 05 07 23 09 00 15 27 31 15 12 11 13 11 00 31 26 21 23 13 17 26 29 25 17 23 18 04 27 03 23 05 07 23 09 02 15 27 31 são 10 colunas, cujos valores em cada coluna pode variar de 00 a 31, e número de linhas variáveis, indo de 10 a 1000 ! o arquivo de saída que desejo tem o seguinte formato ( output.txt ) Index C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 00 - 00 00 00 00 00 01 01 00 00 00 01 - 00 00 00 00 00 00 00 00 00 00 02 - 00 00 00 00 00 00 01 01 00 00 .. .. 31 - 00 00 00 01 00 00 02 00 01 02 e assim sucessivamente. o script que possuo gera o seguinte resultado, sem colocar os índices faltantes com valor 00 column 1: 03 2 10 1 13 2 14 1 15 1 column 2: 10 1 11 1 12 1 17 2 23 2 column 3: 05 2 11 1 22 1 26 2 27 1 column 4: 07 2 13 1 20 1 29 2 31 1 column 5: 10 1 11 1 15 1 23 2 25 2 column 6: 00 1 06 2 09 2 15 1 17 1 column 7: 00 1 02 1 23 2 25 1 31 2 column 8: 02 1 15 2 18 2 23 1 26 1 column 9: 04 2 21 1 27 2 29 1 31 1 column 10: 06 1 09 1 23 1 27 2 31 2 em outras palavras, quero criar uma tabela de saída com tais dados organizados, e onde não houver o índice, preencher com zero na posição correspondente. alguém pode me orientar em como proceder ? script perl: # uso: perl column_values.pl input.txt # No loop while de nível superior: # * Loop sobre cada linha dos arquivos de entrada combinados # * Divida a linha na matriz @Fields # * Para cada coluna, incremente a estrutura de dados da matriz de hashes do resultado while (<>) { @Fields = split / /; for $i ( 0 .. $#Fields ) { $result[$i]{$Fields[$i]}++ }; } # No nível superior do loop: # * Loop sobre a matriz de resultados # * Imprime o número da coluna # * Obtenha os valores usados nessa coluna # * Classifique os valores pelo número de ocorrências # * Classificação secundária com base no valor (por exemplo b vs g vs m vs z) # * Iterar através do hash de resultado, usando a lista classificada # * Imprimir o valor e o número de cada ocorrência for $j ( 0 .. $#result ) { print "column $j:\n"; @values = keys %{$result[$j]}; @sorted = sort { $result{$b}[$j] <=> $result{$a}[$j] || $a cmp $b } @values; for $k ( @sorted ) { print " $k $result[$j]{$k}\n" } } agradeço antecipadamente qualquer ajuda e ou orientação.
×
×
  • Criar Novo...