如何从文件中获取每列的总和,例如:
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()])
其中列数和整数大小受可用内存限制。