Eu uso isso:
$ echo $(cat file | sed 's/$/+/') 0 | bc
Não é eficiente para listas grandes, mas para a maioria dos meus casos de uso, tudo bem. Normalmente, uso uma função de shell para automatizar o processo, de modo que só preciso fornecer um nome de arquivo:
## 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; }
Você sempre pode substituir o marcador de fim de linha por um separador de elemento específico ou classe de caractere se seus dados forem delimitados de outra maneira.