Para somar os últimos campos que têm uma vírgula decimal (ponto) neles:
awk '$NF ~ /\./ { sum += $NF } END { printf("%f\n", sum ) }' file.in
Ou seja, se os dados do último campo ( $NF
) tiverem um ponto, suponha que seja um número e adicione-o a sum
. No final, imprima a soma com o formato especificado na pergunta.
Observe que isso ignorará os inteiros no último campo.
O seguinte permitirá que awk
tente usar o último campo como um número, independentemente do que realmente seja. Isso significa que 1
será interpretado como 1 e que 1.2
será interpretado como 1,2. As strings hello
e boo
serão zero, enquanto 123abc
serão consideradas 123.
awk '{ sum += $NF } END { printf("%f\n", sum) }'
O seguinte não adicionará campos que contenham algo diferente de dígitos, pontos, vantagens e desvantagens:
awk '$NF ~ /^[-+0-9.]*$/ { sum += $NF } END { printf("%f\n", sum) }'
Ele ainda aceitará 09+99...
(como 9), mas os números de pontos flutuantes correspondentes não são triviais e dependem do formato que você precisa corresponder. Veja por exemplo estes exemplos no site da RegExLib para obter padrões mais úteis.