Quote:
Originally Posted by baghera
How to make a while-loop with awk.
Lets say I have a variable number of columns:
1 4 3
2 4 4
3 5 3
Now I want to add all elements of column 1, 2 and 3 and then divide them by the number of elements in each.
columns= the number of columns which is given as an argument to my script
i = the column we are adding for the moment
this is some pseudo code for what I want to be done:
while [columns > 0]
do
awk '{sum+=$i} END {print sum/NR "\t"}'
i++
column--
done
So when executed the finished result will be:
2 6.5 3.333333
But I don't get my while loop to function. Please help me. This is my code:
#############################
while [ "$columns" -gt 0 ]
do
awk_cmd=`awk -v i=$1 '{sum+=$i} END {print sum/NR}'`
echo "$data | $awk_cmd"
i=`expr $i + 1`
columns=`expr $columns - 1`
done
#############################
|
baghera,
I believe we've already gone through this exercise once in one of the previous threads. What is it exactly that you're not trying to do differently?
If you're try to calculate the average value per column for all the rows - this solution has also been provided as part of the previous thread.
Try to understand the previous solution and/or adjust it to your 'new' [???] requirement.