count average


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting count average
# 1  
Old 05-25-2008
count average

Hi Friends,
Can any one help me with count average of student marks in this file (i can not change structure of the input file):

input file:

1:John Smith:2 3 4 5
2:Mark Anderson:3 2
3:Susan Waterman:2 4 2

(numbers of marks are different)

output:

Name:John Smith
ID#: 1
Avg. mark: 3.5

Name:Mark Anderson
ID#: 2
Avg. mark: 2.5

Name:Mark Anderson
ID#: 2
Avg. mark: 2.6667

Name:Susan Waterman
ID#: 3
Avg. mark: 2.5
# 2  
Old 05-25-2008
Hope this helps set you in the right direction:

#!/usr/bin/env perl

use strict;

# define the file
my $file = "in-file.txt";

# open the file and dump it's contents into an array
open(FILE, "<$file") or die "Unable to open $file: $!\n";
my @FILE_IN = <FILE>;
close(FILE);

# define a couple of variables we'll need
my $total;
my $average;

# loop through the file and parse out the name, id, and the average
foreach(@FILE_IN) {
chomp;
if ($_ =~ /^([0-9]+).(\w+\s\w+).(.*)/) {
print "Name: $2\n";
print "ID#: $1\n";
my @MARKS = split('\s', $3);
my $num_of_marks = $#MARKS + 1;

foreach(@MARKS) {
$total += $_;
}

my $average = $total / $num_of_marks;
# adjust %.1f to the desired number of decimal places
printf "Avg. mark: %.1f\n\n", $average;

# reset the total and average variables
# otherwise they'll be carried over
# to the next run through the loop
$total = 0;
$average = 0;
} else {
print "There was a problem!\n";
exit(1);
}
}

exit(0);
# 3  
Old 05-25-2008
With Awk:

Code:
awk -F: '{ n = split($NF, _, OFS)
for (i=1; i<=n; i++) s += _[i]
printf "Name: %s\nID#: %d\nAvg. mark: %.1f\n\n",\
$2, $1, s/n; s = 0 }' input

# 4  
Old 05-25-2008
What means?
Code:
%s

What I should change if input file will look little bit different:
I add 2 columns, so marks are now at 5 th column
Code:
1:John Smith:1:2:2 3 4 5
2:Mark Anderson::2:3:3 2
3:Susan Waterman::7:1:2 4 2


Last edited by mleplawy; 05-25-2008 at 07:26 PM..
# 5  
Old 05-26-2008
Quote:
Originally Posted by mleplawy
What means?
Code:
%s

What I should change if input file will look little bit different:
I add 2 columns, so marks are now at 5 th column
Code:
1:John Smith:1:2:2 3 4 5
2:Mark Anderson::2:3:3 2
3:Susan Waterman::7:1:2 4 2


Did you try the code?
# 6  
Old 05-26-2008
Yes , I try it.
But i do not understand what means %s?
# 7  
Old 05-28-2008
Could anyone help me with that 2 additional columns at AWK?
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to find the count of IP addresses that belong to different subnets and display the count?

Hi, I have a file with a list of bunch of IP addresses from different VLAN's . I am trying to find the list the number of each vlan occurence in the output Here is how my file looks like 1.1.1.1 1.1.1.2 1.1.1.3 1.1.2.1 1.1.2.2 1.1.3.1 1.1.3.2 1.1.3.3 1.1.3.4 So what I am trying... (2 Replies)
Discussion started by: new2prog
2 Replies

2. UNIX for Beginners Questions & Answers

awk or sed script to count number of occurrences and creating an average

Hi Friends , I am having one problem as stated file . Having an input CSV file as shown in the code U_TOP_LOGIC/U_HPB2/U_HBRIDGE2/i_core/i_paddr_reg_2_/Q,1,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,0,0... (4 Replies)
Discussion started by: kshitij
4 Replies

3. UNIX for Beginners Questions & Answers

How to count average and max respon time?

sorry i will revise first (1 Reply)
Discussion started by: fajar_3t3
1 Replies

4. Shell Programming and Scripting

Compare file1 header count with file2 line count

What I'm trying to accomplish. I receive a Header and Detail file for daily processing. The detail file comes first which holds data, the header is a receipt of the detail file and has the detail files record count. Before processing the detail file I would like to put a wrapper around another... (4 Replies)
Discussion started by: pone2332
4 Replies

5. Shell Programming and Scripting

How to find the average,min,max ,total count?

Hi , Below is my sample data,I have this 8 column(A,B,C,D,E,F,G,H) in csv file. A , B ,C ,D ,E ,F,G ,H 4141,127337,24,15,20,69,72.0,-3 4141,128864,24,15,20,65,66.0,-1 4141,910053,24,15,4,4,5.0,-1 4141,910383,24,15,22,3,4.0,-1 4141,496969,24,15,14,6,-24.0,-18... (7 Replies)
Discussion started by: vinothsekark
7 Replies

6. Shell Programming and Scripting

Count time min/max/average for ping

I am redirecting my ping output to a file. The sample output is like this: 64 bytes from xx.xx.xx.167: icmp_seq=4490 ttl=116 3.75 ms 2011Jul12- 15 40 16 64 bytes from xx.xx.xx.167: icmp_seq=4491 ttl=116 5.29 ms 2011Jul12- 15 40 17 64 bytes from xx.xx.xx.167: icmp_seq=4492 ttl=116 4.88 ms... (6 Replies)
Discussion started by: zorrox
6 Replies

7. Shell Programming and Scripting

count identical strings print last row and count

I have a sorted file like: Apple 3 Apple 5 Apple 8 Banana 2 Banana 3 Grape 31 Orange 7 Orange 13 I'd like to search $1 and if $1 is not the same as $1 in the previous row print that row and print the number of times $1 was found. so the output would look like: Apple 8 3 Banana... (2 Replies)
Discussion started by: dcfargo
2 Replies

8. Shell Programming and Scripting

Getting Sum, Count and Distinct Count of a file

Hi all this is a UNIX question. I have a large flat file with millions of records. col1|col2|col3 1|a|b 2|c|d 3|e|f 3|g|h footer**** I am supposed to calculate the sum of col1 1+2+3+3=9, count of col1 1,2,3,3=4, and distinct count of col1 1,2,3=c3 I would like it if you avoid... (4 Replies)
Discussion started by: singhabhijit
4 Replies

9. Shell Programming and Scripting

count average

Hi Friends, Can any one help me with count average of student marks in this file (i can not change structure of the input file): input file: 1 - student ID 2 - student name 3 - group ID 4 - teacher ID 5 - marks (numbers of marks are different) 1:John Smith:2:3:2 3 4 5 2:Mark... (1 Reply)
Discussion started by: mleplawy
1 Replies
Login or Register to Ask a Question