【发布时间】:2016-08-14 13:11:55
【问题描述】:
我在从数据库表中读取记录后生成 CSV 文件。为了验证 CSV 文件是否正确生成,我需要在 CSV 中找到整数列并计算它们的总和以与数据库表进行比较。 我想使用 Perl 来完成这项任务,因为我的一些 CSV 文件可能包含大量记录。 我对 Perl 很陌生,搜索后我应用了以下解决方案:-
-
为了获得列中整数值的总和,使用下面给出的命令:
perl -e "map {$x += $_} <> and print $x" < filepath
但是这个命令只给出了我的 CSV 文件中第一列的总和。但是我的 csv 文件可以在任何位置有一个整数列。
-
然后我尝试了以下脚本:
my $sum = 0; my $line = "111^ABC^XYZ^120000"; chomp $line; my @fields = split /^/ , $line; $sum += $fields[0]; print "$sum\n";
当我将 ^(caret sign) 替换为 :(colon) 等时,此脚本工作正常,但我的 csv 包含由 caret(^) 分隔的数据,这不起作用。
那么任何人都可以建议我在 Perl 中找到一个解决方案,它可以在我的 csv 文件中找到整数列的位置并计算这些列的总和,或者我怎样才能使上述脚本适用于^(插入符号)。
这是 csv 文件的前几行:
"EMP_ID"^"EMP_NAME"^"LOCATION"^"SALARY"
"111"^"name1"^"loc1"^"120000"
"122"^"name2"^"loc2"^"24000"
"133"^"name3"^"loc3"^"55000"
"144"^"name4"^"loc4"^"30000"
【问题讨论】: