linenum=`grep -c "" ../traces.alt/1.gcov`
for ((i=0;i<$linenum;i++))
do
#echo $linenum
failed[i]=0;
passed[i]=0;
done
num=0;
while read line
do
if [[ "$line" =~ [0-9]:[[:space:]]*[0-9][0-9]*:.* ]] #匹配到了覆盖信息
then failed[$num]=`expr ${failed[$num]} + 1`
#echo ................
echo 错误覆盖$num****************!
fi
# num=`expr $num + 1`
((num++))
done < ../traces.alt/1.gcov
echo ${failed[@]}
这是前几天写的shell脚本,为了遍历一个10000+行的文本文件并且对每一行进行匹配,符合要求的向数组里+1。当时num的自曾用了expr,耗费12m左右,由于有470个文件,所以速度过慢。但改为let num++或者((num++))都会提速十倍左右!
另外正则匹配和打印输出对速度影响也很小,所有数值计算才是症结!