awk percentage problem

Please support our Shell Scripting advertiser: Programming Forums - DaniWeb Sister Site
Reply

Join Date: Oct 2008
Posts: 7
Reputation: rockX is an unknown quantity at this point 
Solved Threads: 0
rockX rockX is offline Offline
Newbie Poster

awk percentage problem

 
0
  #1
Oct 31st, 2008
I have about 5000 columns of data that i need to convert all of it into pecentages. for shorter colums i have been using this code:
{print $1/($1+$2)*100,$2/($1+$2),$3/($3+$4)*100 .....}
but this is a teadious process... with help i got this

sed "s/[0-9]*.[0-9]*/&~/g" | tr "\n" " " | tr "~" "\n" | awk '$1*$2>0,z=$1+$2;x=$1/z;y=$2/z {print x,y}'
problem is it prints the input data before converting to %. also i need to code it in such a way that it does all 5000 columns at once... and outputs to lines corresponding to input..
sample data:
55 65 48 45 48 68 32 68 44 34 88 65
82 63 52 54 51 68 75 0 0 20 10 77
55 77 60 55 22 60 40 25 75 55 45 90
20 80 33 63 0 64 32 22 75 0 43 56
54 54 12 35 48 87 65 12 77 85 0 15

Output data:
45.83 54.16 51.61 48.38 .................... (all the columns are in pairs..$1 and $2 are a pair.. so while calculating column 3 and 4.. it would be $3/$3+4 and $4/$3+$4 .....$5/$5+$6, $6/($5,$6)

PS: there will be lines that will have to be divided by zero. in those cases i am using this code.. is it right? need to embedd it into the overall code as well..
if ($0 != 0) lines++; print 0

Thank you.
Reply With Quote Quick reply to this message  
Join Date: Oct 2007
Posts: 399
Reputation: eggi will become famous soon enough eggi will become famous soon enough 
Solved Threads: 47
eggi eggi is offline Offline
Posting Whiz

Re: awk percentage problem

 
0
  #2
Nov 3rd, 2008
Hey there,

Hopefully this will help you out. It also avoids the illegal division by zero and just returns 0 in that condition.

I put your values in a file called "awkpct"

host # cat awkpct
55 65 48 45 48 68 32 68 44 34 88 65
82 63 52 54 51 68 75 0 0 20 10 77
55 77 60 55 22 60 40 25 75 55 45 90
20 80 33 63 0 64 32 22 75 0 43 56
54 54 12 35 48 87 65 12 77 85 0 15
and ran this command

Shell Scripting Syntax (Toggle Plain Text)
  1. host # awk 'BEGIN{lasti=1}{for (i=1;i<=NF;i++) {if ( i%2==0 ) {y=$lasti+$i;printf("%.2f %.2f ", $lasti/y*100, $i/y*100)}lasti=i }printf"\n" }' awkpct

which produces these results:

45.83 54.17 51.61 48.39 41.38 58.62 32.00 68.00 56.41 43.59 57.52 42.48
56.55 43.45 49.06 50.94 42.86 57.14 100.00 0.00 0.00 100.00 11.49 88.51
41.67 58.33 52.17 47.83 26.83 73.17 61.54 38.46 57.69 42.31 33.33 66.67
20.00 80.00 34.38 65.62 0.00 100.00 59.26 40.74 100.00 0.00 43.43 56.57
50.00 50.00 25.53 74.47 35.56 64.44 84.42 15.58 47.53 52.47 0.00 100.00
Best wishes and hope all goes well for you,

Mike
Linux and Unix Tips, Tricks and Individual Advice - The Linux and Unix Menagerie!
------------------------------------------------------------------------
The greatest viral marketing idea of all time, get your copy of this Free Report now!
Reply With Quote Quick reply to this message  
Join Date: Apr 2008
Posts: 58
Reputation: omrsafetyo is an unknown quantity at this point 
Solved Threads: 9
omrsafetyo omrsafetyo is offline Offline
Junior Poster in Training

Re: awk percentage problem

 
0
  #3
Nov 6th, 2008
Mike,

Definitely some genius code there.... the one thing you missed is that it needs to skip a column....

I was hoping you could just increment i by 2 - but that doesn't seem to work... I really don't know all that you are doing there, so I was unable to figure it out.
Reply With Quote Quick reply to this message  
Join Date: Oct 2007
Posts: 399
Reputation: eggi will become famous soon enough eggi will become famous soon enough 
Solved Threads: 47
eggi eggi is offline Offline
Posting Whiz

Re: awk percentage problem

 
0
  #4
Nov 7th, 2008
Thanks

I was a little confused by the question, actually What I was working on was the assumption that I had to do, per record, was:

field1/field1+field2 - field2/field1+field2 - field3/field3+field4 - field4/field3+field4 etc..

Can you rephrase the original request (I know it's not your question, so apologies) but I think I'm still misreading something that you've noticed.

Speaking of owners, what happened to RockX? If you're out there; any thoughts?



Best wishes,

Mike
Linux and Unix Tips, Tricks and Individual Advice - The Linux and Unix Menagerie!
------------------------------------------------------------------------
The greatest viral marketing idea of all time, get your copy of this Free Report now!
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Other Threads in the Shell Scripting Forum
Thread Tools Search this Thread



Tag cloud for Shell Scripting
About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC