Unix 尝试获取索引的总和时,总和表达式无效
我需要获取csv文件每一行中特定索引处存在的所有值的总和。该文件可能包含50000条以上的记录。因此,效率是一个给定的参数 我正在尝试以下代码。但似乎不起作用Unix 尝试获取索引的总和时,总和表达式无效,unix,awk,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
#!/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
#/垃圾箱/垃圾箱
文件=$1
#使用文件描述符读取$FILE
exec 3您应该在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
或者我最喜欢的模式之一:
cut -d "," -f 3 "$FILE" | paste -sd+ | bc
谢谢。awk方法完成了任务。但是为什么早期的方法不起作用呢??