943,522 Members | Top Members by Rank

Ad:
Oct 31st, 2008
0

awk percentage problem

Expand Post »
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.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
rockX is offline Offline
7 posts
since Oct 2008
Nov 3rd, 2008
0

Re: awk percentage problem

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"

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

Quote ...
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
Reputation Points: 102
Solved Threads: 47
Posting Whiz
eggi is offline Offline
399 posts
since Oct 2007
Nov 6th, 2008
0

Re: awk percentage problem

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.
Reputation Points: 13
Solved Threads: 9
Junior Poster in Training
omrsafetyo is offline Offline
58 posts
since Apr 2008
Nov 7th, 2008
0

Re: awk percentage problem

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
Reputation Points: 102
Solved Threads: 47
Posting Whiz
eggi is offline Offline
399 posts
since Oct 2007

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Shell Scripting Forum Timeline: Using Shell Script how to send mail automatically
Next Thread in Shell Scripting Forum Timeline: How to check my conditions....!!!





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC