Averaging in increments using awk & head/tail


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Averaging in increments using awk & head/tail
# 1  
Old 08-10-2010
Averaging in increments using awk & head/tail

Hi, I only have a very limited understanding and experience with writing code and I was hoping I could get some help.
I have a dataset of two columns (txt format, numbers in each row separated by a tab)
Eg.
1 5
2 5
3 6
4 7
5 6
6 6
7 5
8 3
9 2
10 1

I want to get the average of column 2 for the first three numbers - so 5,5,6 - then move down one position for the average of the next three - so 5,6,7 - then average the next lot - 6,7,6 - etc, moving down the whole column. So then I'll end up with a column of averages.

5.33
6
6.33
6.33
...etc

This is my code so far...
Code:
 
head -3 datafilename.txt | tail -3 | awk '{sum +=$2} END {print sum/3}'

...which will give me the average of the first bracket of three numbers.
I've been trying to use a for loop to move the averaging down the column but I'm having difficulty making it work.
Something like...
Code:
 
BEGIN {for (i=1; i++)} head -$i datafilename.txt | tail -3 | awk '{sum +=$2} END {print sum/3}'

But I have no idea really (you can probably tell).

Any suggestions would be greatly appreciated,
Emred Skye.
# 2  
Old 08-10-2010
Code:
cut -f2 -d" " file| paste - - -|sed -r 's/[ \t]+/+/g'| sed 's|.*|echo "scale=2;(&)\/3"\|bc|' |sh 2>/dev/null

# 3  
Old 08-10-2010
Hi

Code:
awk '{printf "%d ",$2}' file | awk '{while(j+2!=NF){for(i=j;i<j+3;i++)sum+=$i;print sum/3;sum=0;j++;}}' j=1

Guru.
This User Gave Thanks to guruprasadpr For This Post:
# 4  
Old 08-10-2010
Code:
awk '{printf "%d ",$2}' file |awk '{for (i=3;i<=NF;i++) printf "%.2f\n", ($(i-1)+$(i-2)+$i)/3}'

This User Gave Thanks to rdcwayx For This Post:
# 5  
Old 08-10-2010
Thanks for the quick responses! I couldn't get kurumi's code to work (and I do not understand it) but Guru's and rdcwayx's both work.

Guru if you are able to explain, can you tell me why you need ---> while(j+2!=NF)
# 6  
Old 08-10-2010
Hi
J+2 is needed so that you stop the processing while encountering the third last line itself.

Guru.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

How to display certain line of file only using head or tail in 1 command?

First month learning about the Linux terminal and it has been a challenge yet fun so far. We're learning by using a gameshell. I'm trying to display a certain line ( only allowed 1 command ) from a file only using the head or tail. I'm pretty about this answer: head -23 history.txt | tail -1... (1 Reply)
Discussion started by: forzatekk
1 Replies

2. UNIX for Dummies Questions & Answers

What should be precedence of using awk, sed, head and tail in UNIX?

Hi All, I am new to unix. In this forum some days back, I have read something like below: 1) Do not use perl if awk can do your work. 2) Do not use awk if sed can do your work. . . . I do not re-collect the whole thing. I think it is good to know the precedence of using these... (2 Replies)
Discussion started by: Prathmesh
2 Replies

3. Homework & Coursework Questions

Head Tail Problem

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: view the 7th line of the program xxx.sh 2. Relevant commands, code, scripts, algorithms: head command tail... (10 Replies)
Discussion started by: hbell221
10 Replies

4. UNIX for Dummies Questions & Answers

head\tail how to display middle lines

hay i need to display middle line: 1 2 3 4 5 how can i display 3-4? (6 Replies)
Discussion started by: margan_ron
6 Replies

5. Shell Programming and Scripting

head / tail combination returns multiple rows

Hi, As part of our project, we need to load historical data for a year before our system is live. We have the data feed files that we need to load. However, I need to make sure that the file structure (number of fields separated by a comma) on the field is same for all the files of the same... (1 Reply)
Discussion started by: raj.jha
1 Replies

6. Shell Programming and Scripting

Imitate head and tail command script

Hi, I have been given assignment of 30 scripts out of which I was able to solve many, I need help with few out of which one asks to imitate head and tail command of unix without using the head and tail commands. Problem is stated below: Write an interactive shell script to imitate the head... (5 Replies)
Discussion started by: nutalk
5 Replies

7. Shell Programming and Scripting

Head and Tail in One Line

I am new to UNIX......I have one file which contains thousnads of records with header and tailer. Header Record 1 Record 2 .... .... Last Record Trailer I want to concatenate Header and Trailer in the first line....now the output should look like this: Header: Header value, Trailer:... (2 Replies)
Discussion started by: 33junaid
2 Replies

8. UNIX for Dummies Questions & Answers

head & tail

I've a major file which includes other files and now I wanna 'cut' the file in several minor parts....like .... find / -name "*.tmp" >filea wc -l filea >fileb sed -e '1s/ filea//' fileb >filec AMOUNT=`cat filec` if ; then cat file a |head -100l (ell) |tail -100l >filec cat file a |head... (6 Replies)
Discussion started by: svennie
6 Replies

9. Shell Programming and Scripting

Implementing MORE,HEAD & TAIL

hai in my shell script i want to replace the following commands 1) more 2) head 3) tail i want to try all type of possible options avaliabul in the above commands please help in implementing those commands (9 Replies)
Discussion started by: g_s_r_c
9 Replies
Login or Register to Ask a Question