неверное выражение суммы при попытке получить сумму индекса - PullRequest
0 голосов
/ 23 мая 2011

Мне нужно взять сумму всех значений, присутствующих в определенном индексе в каждой строке 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 голосов
/ 23 мая 2011

Или одна из моих любимых моделей:

cut -d "," -f 3 "$FILE" | paste -sd+ | bc
0 голосов
/ 23 мая 2011

Вы должны инициализировать сумму перед циклом while:

sum=0

Вам нужно обрезать строку, которую вы читаете:

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

Вам нужен пробел до и после плюса вexpr:

sum=`expr $sum + $valindex`

В качестве альтернативы используйте awk.Это намного проще:

awk -F, '{SUM+=$3} END{print SUM}' $FILE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...