soma linhas e colunas em uma tabela de números

1

Eu tenho grandes e muitas tabelas de números. Abaixo está apenas uma amostra:

A 25 27 50 
B 35 37 75 
C 75 78 80 
D 99 88 76 

Eu quero somar as linhas e as colunas em cada tabela para processamento adicional, de modo que a saída fique assim:

A 25 27 50 102
B 35 37 75 147
C 75 78 80 233
D 99 88 76 263
234 230 281

Como posso fazer isso? Eu tentei awk mas não funcionou.

    
por Zahi 06.10.2018 / 15:56

2 respostas

1

No caso geral, você precisaria fazer:

awk '{
    for (i=2; i<=NF; i++) {
        sumcols[i]+= $i; sumrows+= $i 
    }; print $0, sumrows
}
END { for (x in sumcols)
         { printf SEP sumcols[x]; SEP=FS };
     print ""
}' infile

A parte sumcols[i]+= $i está resumindo o valor do campo na mesma posição da coluna; e sumrows+= $i está fazendo a soma na mesma posição de linhas, depois as linhas são impressas após cada linha lida com print $0, sumrows ;

e no loop END sobre a matriz sumcols e use printf para imprimir em uma única linha. O SEP está definido com o valor do eparador padrão F ield S para a segunda impressão para o próximo, a fim de adicionar um único espaço entre cada um.

    
por 06.10.2018 / 20:10
0

Você pode tentar este comando:

awk '{sum2+=$2; sum3+=$3; sum4+=$4} END {print sum2,sum3,sum4}''{print $0, $2+$3+$4}' file
A 25 27 50 102
B 35 37 75 147
C 75 78 80 233
D 99 88 76 263
234 230 281
    
por 06.10.2018 / 16:00