Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否添加文本文件中所有行的值?_Python_Bash_Perl_Shell_Math - Fatal编程技术网

Python 是否添加文本文件中所有行的值?

Python 是否添加文本文件中所有行的值?,python,bash,perl,shell,math,Python,Bash,Perl,Shell,Math,我有一个如下所示的文本文件: 0,5 3,100 30,90 对于每一行,我需要从第二列的值中减去第一列的值,然后加1。然后把每一行加起来。对于上述示例: 5-0+1 = 6 100-3+1 = 98 90-30+1 = 61 然后我把这些数字加起来:6+98+61=165 我试图得到的最终结果是165。只要遵循上述相同的逻辑,我并不在乎是否以不同的方式完成。我只是想找出最好的办法 文本文件有大约1500万行文本。第二个数字总是大于或等于第一个数字,所以你永远不用担心负数 只要不需要安装额外

我有一个如下所示的文本文件:

0,5
3,100
30,90
对于每一行,我需要从第二列的值中减去第一列的值,然后加1。然后把每一行加起来。对于上述示例:

5-0+1 = 6
100-3+1 = 98
90-30+1 = 61
然后我把这些数字加起来:6+98+61=165

我试图得到的最终结果是165。只要遵循上述相同的逻辑,我并不在乎是否以不同的方式完成。我只是想找出最好的办法

文本文件有大约1500万行文本。第二个数字总是大于或等于第一个数字,所以你永远不用担心负数

只要不需要安装额外的非默认模块,我可以用任何最好的语言来做这件事。任何例子也将不胜感激


我主要担心的是它处理1500万行,我需要它尽可能快,而且我对编码语言不够熟悉,不知道哪种语言最有效。

这是我不知道的,但我认为awk是一个潜在的解决方案,假设数字在numbers.txt中:

awk -F, '{tot += $2 - $1 + 1} END{print tot}' < numbers.txt
F告诉awk逗号是分隔符,tot以0开头,默认情况下,END是一个awk关键字,表示在数据上点击EOF后执行后面的代码块


Awk不是阿森纳最快的武器,但我会尝试一下,因为它适合一条线

在perl中,我会这样做:

#!/usr/bin/env perl
use strict;
use warnings;

my $sum;
while ( <> ) { 
   m/(\d+),(\d+)/;
   $sum += $2 - $1 + 1;
}
print $sum;

谢谢工作完美,我会在3分钟内接受你的答案,当它允许我出于好奇,15米长的行需要多长时间?你可以把时间放在命令前面来获取时间。它比我预期的快得多:real-0m 0.134s,user-0m 0.131s,sys-0m 0.003sExcellent!很乐意帮忙。你有两个不错的答案,但你应该展示你的努力。金额可能有多大?您可能需要担心算术溢出。此外,该计算相当于sumcol2-sumcol1+NumRows。这是否比每行的算术更好,部分取决于数值。
perl -F',' -lane '$sum += $F[1] - $F[0] + 1; END { print $sum }'