awk help please

  1. The problem statement, all variables and given/known data:
    Using "filename" as the input, write an awk script that will find the sum and average of each user's grade and display them after their names in order. Also display the average of all the users at the end of your output.
    "the file"
    Bred Lerry 89 34 92 78 100 80
    Farla Moran 71 73 38 98
    Ed Morton 89 74 85 78
    Ted Nifle 83 78 56 90
    Ed Norton 67 78 92 34
    Ivana Notrump 92 81 85 94
    Ned Osgood 75 83 67 92 50
    George Berry 86 84 76 78
    Bob Marly 78 85 71 77 80
    Ed Fible 67 89 90 95
    "end of file"

  2. Relevant commands, code, scripts, algorithms:
    I can use awk, if statements for loops and while loops but they all have to be used with awk.

  3. The attempts at a solution (include all code and scripts):
    attempt 1

awk ' { for ( i = 1 ; i <= NF ; i++ ) 
{ data +=i
items++
}
} END { print " total " items " data " data/items } ' stu

and I really don't understand the items++. I believe that the data +=i is putting the result of $i in that right? but I don't understand where the items come into play.
second attempt

awk 'BEGIN { print $1 "the average grade" } NF>6 { for ( y = 1 ; y <= NF ; y++ )  
{ total += $y 
grade++
}                                                                      
} END { print total / grade  } ' stu
awk 'NF>6 { sum = sum + $3 + $4 } { print sum } ' stu

If I could get a little help here that would really make my day. I've been racking my brain about this for two days and all the information that I have found on the Internet has just really confused me further. All I got in class was some sample awk scripts to look over and they did not explain to much. So if anyone can help me understand this that would be great thank you.

  1. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course): Washtenaw community college, Ann Arbro, Michigan, Prof. Geyer, CIS221

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

I'll give you a few clues.

In awk, you might do something like: BEGIN { print "report heading" } . This BEGIN block is executed once at the beginning of the run. You might print a heading as I show or initialize variables. But you would not use $1. The file has not been read. There is no $1 at this point.

There is also an END block that you can use. It is executed once after all of the data has been processed. This is where you might print out totals or stuff like that.

In between the BEGIN and END blocks are other blocks. You could have a condition like NF>6 { stuff to do } if you really want the block executed only for records with more that 6 fields. This would exclude most of your data lines, but it would include a couple of them. If you want to process all of your data lines, leave the condition off like this: { stuff to do }

Variables pop into existence already initialized to zero. Code like i++; adds 1 to i each time it is executed. Code like total += data; adds the variable data to the variable total each time it is run. Remember, after you put data in total, it stays there. If you need a total for each record you process you probably need to initial total to zero yourself for each record. total=0;

As you process each record of your file, $1 and $2 are the first and last names. To loop through the grades you need something like for (i=3; i<= NF; i++) { stuff to do } You may find that you need a total for the line and a separate total for the file.

I think you can probably take it from here.