如何从文件中获取数字并使用 shell 脚本进行计算

Din*_*yan 1 command-line scripts

我有一个名为 numbers.txt 的文件。包含一些这样的数字

1568
14578
2365
41655
9965
...
...
Run Code Online (Sandbox Code Playgroud)

我需要对这些数字求和。我如何使用 shell 脚本来解决这个问题?

Oli*_*Oli 5

如果您的文件很大(例如seq 1 100000000 > numbers.txt),传统工具就会开始崩溃。

我提供的替代方案可以在 6.4 秒内添加一亿个整数......

...但它是用 C 编写的。 Easy C. 没有奇怪的构建要求,或者理解它所需的程度,但你必须编译它并且文件名被硬编码到其中(你可以修复)......

#include <stdio.h>

int main(void) {
    FILE *fp;

    char line[100];
    unsigned long int total = 0;

    fp = fopen("numbers.txt", "r");

    while (fgets(line, 100, fp) != NULL) {
        total += atoi(line);
    }
    fclose(fp);

    printf("%li\n", total);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

将其另存为类似add.c, runmake add然后./add运行。