由空格分隔的文本源的总和

由空格分隔的文本源的总和

如何从文件中获取每列的总和,例如:

123  32  122
43   11  0
444  112 32

并给出结果如下:

610 155 154

在一个简单的命令中?

在 Perl 中这应该很容易,但我想知道是否有人已经将它打包在 Universe 存储库或其他地方,以及其他与文本表有关的实用程序。

答案1

这应该可以解决问题:

cat foo | awk '{ SUM += $1; SUM1 += $2; SUM3 += $3} END { print SUM, SUM1, SUM3 }'

答案2

awk 非常适合这类任务

awk '{for (i=1; i<=NF; ++i) sum[i]+=$i} END {for (i=1; i<=NF; ++i) printf "%3d ", sum[i]; printf "\n"}' filename

答案3

在python中:

reduce(lambda x, y: \
  map(lambda pair: pair[0] + pair[1], zip(x, y)), \
  [map(int, n.split()) for n in file("foo", "r").read().splitlines()])

其中列数和整数大小受可用内存限制。

相关内容