如何使用由空格分隔的 for 循环读取数据文件?

How can I read data file using for loop separated by spaces?

我是 bash 脚本编写新手,正在尝试为我的数据文件解决一个问题。

我有一个包含三列的文件,文件的模式如下

#col1   #col2   #col3  

1.1 0.0 2.1
1.2 0.0 2.2
1.3 0.0 2.3

0.9 0.0 0.3
0.8 0.0 0.4
0.7 0.0 0.4

2.1 0.0 0.6
2.1 0.0 0.6
2.2 0.0 0.7

它有 1000 多个术语。

我必须取第三列的平均值。为此,我必须在一个循环中读取文件,然后考虑 space,对第二个循环执行相同的操作,考虑 space,然后循环第三列。

我写了一个小脚本,但我无法理解如何再次开始第二次迭代并计算平均值。

IFS=$'\n'
count=0;
total=0;
for i in $( awk '{print ;}' Berry_Ef)
do
        k=$(awk -v n=$i 'NR==n{print }' )
        total=$( echo $total+$i | bc)
        ((count ++))
done
echo "$count" "count">> sum
echo  "$total" "total">>sum
echo "scale=5; $total/$count" | bc >>sum

任何建议和帮助对我都很重要。

建议使用单个 awk 脚本只读取和处理一次输入文件。

 awk ' { 
   ++col3Count;
   total = total + ;
 }
 END {
   printf("total = %d count = %d normal = %d\n", total, col3Count, (total/col3Count));
 }
 ' input.csv