awk help please

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions awk help please
# 1  
Old 04-14-2011
Question 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
Code:
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
Code:
awk 'BEGIN { print $1 "the average grade" } NF>6 { for ( y = 1 ; y <= NF ; y++ )  
{ total += $y 
grade++
}                                                                      
} END { print total / grade  } ' stu

Code:
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.




4. 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).

Last edited by linuxtraining; 04-14-2011 at 10:32 PM.. Reason: forgot the state
# 2  
Old 04-15-2011
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.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk output yields error: awk:can't open job_name (Autosys)

Good evening, Im newbie at unix specially with awk From an scheduler program called Autosys i want to extract some data reading an inputfile that comprises jobs names, then formating the output to columns for example 1. This is the inputfile: $ more MapaRep.txt ds_extra_nikira_usuarios... (18 Replies)
Discussion started by: alexcol
18 Replies

2. Shell Programming and Scripting

Pass awk field to a command line executed within awk

Hi, I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date). All my attempts failed this far. Here's an example. It works fine with timestamp hard-codded into the command echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
Discussion started by: tuxer
4 Replies

3. Shell Programming and Scripting

Passing awk variable argument to a script which is being called inside awk

consider the script below sh /opt/hqe/hqapi1-client-5.0.0/bin/hqapi.sh alert list --host=localhost --port=7443 --user=hqadmin --password=hqadmin --secure=true >/tmp/alerts.xml awk -F'' '{for(i=1;i<=NF;i++){ if($i=="Alert id") { if(id!="") if(dt!=""){ cmd="sh someScript.sh... (2 Replies)
Discussion started by: vivek d r
2 Replies

4. Shell Programming and Scripting

HELP with AWK one-liner. Need to employ an If condition inside AWK to check for array variable ?

Hello experts, I'm stuck with this script for three days now. Here's what i need. I need to split a large delimited (,) file into 2 files based on the value present in the last field. Samp: Something.csv bca,adc,asdf,123,12C bca,adc,asdf,123,13C def,adc,asdf,123,12A I need this split... (6 Replies)
Discussion started by: shell_boy23
6 Replies

5. Shell Programming and Scripting

awk command to compare a file with set of files in a directory using 'awk'

Hi, I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files. To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Discussion started by: anandek
10 Replies

6. Shell Programming and Scripting

Comparison and editing of files using awk.(And also a possible bug in awk for loop?)

I have two files which I would like to compare and then manipulate in a way. File1: pictures.txt 1.1 1.3 dance.txt 1.2 1.4 treehouse.txt 1.3 1.5 File2: pictures.txt 1.5 ref2313 1.4 ref2345 1.3 ref5432 1.2 ref4244 dance.txt 1.6 ref2342 1.5 ref2352 1.4 ref0695 1.3 ref5738 1.2... (1 Reply)
Discussion started by: linuxkid
1 Replies

7. Shell Programming and Scripting

Problem with awk awk: program limit exceeded: sprintf buffer size=1020

Hi I have many problems with a script. I have a script that formats a text file but always prints the same error when i try to execute it The code is that: { if (NF==17){ print $0 }else{ fields=NF; all=$0; while... (2 Replies)
Discussion started by: fate
2 Replies

8. Shell Programming and Scripting

awk: assign variable with -v didn't work in awk filter

I want to filter 2nd column = 2 using awk $ cat t 1 2 2 4 $ VAR=2 #variable worked in print $ cat t | awk -v ID=$VAR ' { print ID}' 2 2 # but variable didn't work in awk filter $ cat t | awk -v ID=$VAR '$2~/ID/ { print $0}' (2 Replies)
Discussion started by: honglus
2 Replies

9. Shell Programming and Scripting

scripting/awk help : awk sum output is not comming in regular format. Pls advise.

Hi Experts, I am adding a column of numbers with awk , however not getting correct output: # awk '{sum+=$1} END {print sum}' datafile 2.15291e+06 How can I getthe output like : 2152910 Thank you.. # awk '{sum+=$1} END {print sum}' datafile 2.15079e+06 (3 Replies)
Discussion started by: rveri
3 Replies

10. Shell Programming and Scripting

Awk problem: How to express the single quote(') by using awk print function

Actually I got a list of file end with *.txt I want to use the same command apply to all the *.txt Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics. For example: I got the file below: file1.txt file2.txt file3.txt... (4 Replies)
Discussion started by: patrick87
4 Replies
Login or Register to Ask a Question