A coluna de soma AWK no arquivo especifica como um argumento

3

Eu quero escrever um script que resume minha coluna no arquivo. O número de colunas que ele quer dar como argumento. Pode ser vários. Eu não sei como resolver isso com o awk, então isso resume várias colunas.

cat count.txt | awk '{ sum+=$1} END {print sum}'

Por exemplo, este código soma uma coluna, assim como o número de colunas não é constante? Só depende do que o usuário colocou?

Eu gostaria de somar os números da coluna 2, 5, 1 ou da próxima vez 6,3,2 etc.

    
por lukassz 12.11.2015 / 17:17

1 resposta

2

Primeiro, não é necessário cat - o awk sabe como ler arquivos.

Você desejará passar as colunas como uma string separada por vírgula usando a opção -v e, em seguida, no bloco BEGIN do awk, divida a string

awk -v cols="2,5,1" '
    BEGIN {n = split(cols, ary, /,/); sum=0}
    {for (i=1; i<=n; i++) sum += $(ary[i])}
    END {print sum}
' count.txt

split retorna o número de elementos gerados, portanto, certifique-se de salvar este valor para poder fazer um loop sobre o array mais tarde.

    
por 12.11.2015 / 17:25

Tags