Ir para conteúdo
Fórum Script Brasil

eolocos

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre eolocos

eolocos's Achievements

0

Reputação

  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...