Como somar o conteúdo de todos os arquivos no diretório em coluna

0

Eu quero adicionar esses arquivos na coluna, ou seja, a coluna 1 do arquivo 1 deve ser adicionada à coluna 1 do arquivo 2 e assim por diante ..., da mesma forma coluna 2 do arquivo 1 deve ser adicionado à coluna 2 do arquivo 2 ......

Col1(File1) + Col1(File2) + Col1(File3) .............. + Col1(File'n') = Col1(output_file)

Col2(File1) + Col2(File2) + Col2(File3) .............. + Col2(File'n') = Col2(output_file)

ou se os arquivos forem assim

File 1          File 2          File n                   Output File 
a   d           b   e           c   f               a+b+...+c   d+e+....+f
c   d           c   d           a   b               c+c+...+a   d+d+....+b
e   f           e   f           a   b                   .       .
g   h      +    g   h           a   b               .       .
.   .           .   ......+......   .       =       .       .
.   .           .   .           .   .                   .       .
.   .           .   .           .   .                   .       .
.   .           .   .           .   .                   .       .
.   .           .   .           .   .                   .       .
    
por user178164 05.07.2016 / 06:07

1 resposta

1

Aqui está uma maneira de fazer isso em perl :

#!/usr/bin/perl

use strict;

my @lines=();

# read and sum the columns of all input files.
foreach my $file (@ARGV) {
  my $lc=0;   # line counter

  open(FH,'<',$file) or die "couldn't open $_ for write: $!\n";

  while (<FH>) {
    # split columns by whitespace.  change to suit your input.
    my @fields=split;

    my $fc=0;   # field counter

    while ($fc < @fields) {
      $lines[$lc]->[$fc] += $fields[$fc++];
    };
    $lc++;
  };

  close(FH);
};

# now output the summed lines
foreach my $lc (0..@lines-1) {
  # output columns separated by a TAB (\t).  Change as required.
  print join("\t", @{ $lines[$lc] } ),"\n";
}

Soma colunas para cada linha para todos os arquivos de entrada.

Valores não numéricos em campos são tratados como 0.

Funciona com arquivos com números de linhas iguais ou diferentes.

Ele ainda funciona se os arquivos tiverem números variados de campos por linha (embora a saída possa não ser o que você espera ou até mesmo utilizável - não é recomendada).

    
por 05.07.2016 / 07:28