operações aritméticas simples em um arquivo de texto delimitado por tabulação no shell script

0

Eu tenho um arquivo de texto delimitado por tabulação contendo colunas C1 ... Cn e linhas R1 a Rn. A coluna 10 (C10) tem um campo 'X' = quatro valores inteiros separados por vírgula (X = a, b, c, d). Eu gostaria de fazer uma pequena operação aritmética em C10, como (a / (a + b + c + d)) * 100 e colocar os resultados como nova coluna (Cn + 1) adicionando o mesmo arquivo OU em uma nova saída arquivo.

(1) Alguém pode me ajudar com um shell script unix para fazer isso em um único arquivo?

(2) Se eu quiser repetir os mesmos cálculos sobre vários arquivos, você pode me ajudar com um wrapper de shell?

    
por panbar 11.03.2016 / 17:48

2 respostas

1

Use o método awk

awk -F'\t' '{ A=$10;gsub(/X=/,"",A); split(A,B,","); print $0"\t"(B[1]/(B[1]+B[2]+B[3]+B[4]))*100 }' input.txt > output.txt
    
por 11.03.2016 / 22:23
0

Perl para o resgate!

perl -nlaF '\t' -e ' my ($A, $B, $C, $D) = split /,/, $F[9];
                     print "$_\t", 100*$A/($A+$B+$C+$D);
                   ' input-file > output-file
  • -n lê a linha de entrada por linha
  • -l manipula as novas linhas em print .
  • -a divide a entrada em que -F especifica
  • $_ contém a linha lida da entrada
por 11.03.2016 / 18:36