如何解决试图获得索引之和时无效的和表达式
| 我需要将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
解决方法
您应该在while循环之前初始化总和:
sum=0
您需要切断正在阅读的行:
valindex=`echo $line|cut -d \",\" -f 3`
在expr中的加号前后需要一个空格:
sum=`expr $sum + $valindex`
或者,使用awk。它要简单得多:
awk -F,\'{SUM+=$3} END{print SUM}\' $FILE
,或我最喜欢的模式之一:
cut -d \",\" -f 3 \"$FILE\" | paste -sd+ | bc
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。