Yo uso esto:
$ echo $(cat file | sed 's/$/+/') 0 | bc
No es eficiente para listas grandes, pero para la mayoría de mis casos de uso está bien. Por lo general, uso una función de shell para automatizar el proceso, de modo que solo tengo que proporcionar un nombre de archivo:
## cheezy summation
## call from .bashrc
##
getsum () { echo $(cat $1 | sed 's/$/+/') 0 | bc; }
gethsum () { echo $(cat $1 | sed 's/[gG]/*1000M/' | sed 's/[mM]/*1000K/' | sed 's/[kK]/*1000/' | sed 's/$/+/') 0 | bc; }
gethexsum () { echo ibase=16 $(cat $1 | sed 's/$/+/') 0 | bc; }
Siempre puede sustituir el marcador de fin de línea por un separador de elemento específico o una clase de caracteres si sus datos están delimitados de otra manera.