尝试获取索引总和时的无效求和表达式

时间:2011-05-23 08:18:29

标签: unix awk

我需要获取csv文件的每一行中特定索引处存在的所有值的总和。该文件可能包含超过50000条记录。所以效率是给定的。

我正在尝试以下代码。但似乎没有工作。

#!/bin/sh

FILE=$1
# read $FILE using the file descriptors

exec 3<&0
exec 0<$FILE

while read line
do

valindex=`cut -d "," -f 3`
echo $valindex
sum=`expr $sum+$valindex`

done

echo $sum

2 个答案:

答案 0 :(得分:0)

你应该在while循环之前初始化sum:

sum=0

您需要剪切正在阅读的行:

valindex=`echo $line|cut -d "," -f 3`

在expr中加号之前和之后需要一个空格:

sum=`expr $sum + $valindex`

或者,使用awk。这简单得多:

awk -F, '{SUM+=$3} END{print SUM}' $FILE

答案 1 :(得分:0)

或者我最喜欢的模式之一:

cut -d "," -f 3 "$FILE" | paste -sd+ | bc