Percentages from line to line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Percentages from line to line
# 1  
Old 01-17-2017
Percentages from line to line

i have a column of numbers and i need to find the percentage drops or increases from line to line.

suppose i have this:

Code:
45
14
14
2
8
8
8


the output im currently getting is this:

Code:
14
14,0%
2
8,75%
8
8,0%


which was produced by the following code:

Code:
awk '{prev=$1; print; getline; print $0","($1-prev)/$1*100"%"}'

the problem is when one of the numbers is a zero, awk bombs out. is there a way to modify this awk code to check to see if the numbers are zero, and if zero, it'll just assume a 0% change?

i basically have specific values for 24 hours. and i need to print the percentage drop or increase from hour to hour.

so lets assume the last 4 hours have the value:

20:00,120
21:00,50
22:00,39
23:00,90
00:00,70

the code im looking for will produce the following output:

Code:
20:00,120,-80%
21:00,50,-15%
22:00,39,-34%
23:00,90,+69%
00:00,70,-20%

note, the percentages above are wrong. i just put them there as an example.

but what im trying to do here is calculate the percentage drop or increases from one hour to the next.

i apologize if i inadvertently made this complicated.

Last edited by SkySmart; 01-17-2017 at 05:12 AM..
# 2  
Old 01-17-2017
Something along this line:
Code:
awk -F, '
NR > 1  {if ($2 !=0)    {TMP = ($2 - PREV) / $2 * 100
                         $3 = sprintf ("%.2f %%", TMP)
                        }
         else $3 = "zero value"
        }
        {PREV = $2
        }
1
' OFS=, file
20:00,120
21:00,50,-140.00 %
22:00,39,-28.21 %
23:00,90,56.67 %
00:00,70,-28.57 %

This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Get an output of lines in pattern 1st line then 10th line then 11th line then 20th line and so on.

Input file: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (6 Replies)
Discussion started by: Sagar Singh
6 Replies

2. Shell Programming and Scripting

How to read file line by line and compare subset of 1st line with 2nd?

Hi all, I have a log file say Test.log that gets updated continuously and it has data in pipe separated format. A sample log file would look like: <date1>|<data1>|<url1>|<result1> <date2>|<data2>|<url2>|<result2> <date3>|<data3>|<url3>|<result3> <date4>|<data4>|<url4>|<result4> What I... (3 Replies)
Discussion started by: pat_pramod
3 Replies

3. Shell Programming and Scripting

Need a program that read a file line by line and prints out lines 1, 2 & 3 after an empty line...

Hello, I need a program that read a file line by line and prints out lines 1, 2 & 3 after an empty line... An example of entries in the file would be: SRVXPAPI001 ERRO JUN24 07:28:34 1775 REASON= 0000, PROCID= #E506 #1065: TPCIPPR, INDEX= 003F ... (8 Replies)
Discussion started by: Ferocci
8 Replies

4. Shell Programming and Scripting

sed command to replace a line at a specific line number with some other line

my requirement is, consider a file output cat output blah sdjfhjkd jsdfhjksdh sdfs 23423 sdfsdf sdf"sdfsdf"sdfsdf"""""dsf hellow there this doesnt look good et cetc etc etcetera i want to replace a line of line number 4 ("this doesnt look good") with some other line ... (3 Replies)
Discussion started by: vivek d r
3 Replies

5. Shell Programming and Scripting

Commenting a specific line and inserting a new line after commented line.

Hello All, I have following file contents cat file #line=aaaaaa #line=bbbbbb #line=cccccc #line=dddddd line=eeeeee #comment=11111 #comment=22222 #comment=33333 #comment=44444 comment=55555 Testing script Good Luck! I would like to comment line line=eeeeee and insert a new line... (19 Replies)
Discussion started by: manishdivs
19 Replies

6. Shell Programming and Scripting

how to read the contents of two files line by line and compare the line by line?

Hi All, I'm trying to figure out which are the trusted-ips and which are not using a script file.. I have a file named 'ip-list.txt' which contains some ip addresses and another file named 'trusted-ip-list.txt' which also contains some ip addresses. I want to read a line from... (4 Replies)
Discussion started by: mjavalkar
4 Replies

7. Solaris

Line too long error Replace string with new line line character

I get a file which has all its content in a single row. The file contains xml data containing 3000 records, but all in a single row, making it difficult for Unix to Process the file. I decided to insert a new line character at all occurrences of a particular string in this file (say replacing... (4 Replies)
Discussion started by: ducati
4 Replies

8. Shell Programming and Scripting

[Solved] Problem in reading a file line by line till it reaches a white line

So, I want to read line-by-line a text file with unknown number of files.... So: a=1 b=1 while ; do b=`sed -n '$ap' test` a=`expr $a + 1` $here do something with b etc done the problem is that sed does not seem to recognise the $a, even when trying sed -n ' $a p' So, I cannot read... (3 Replies)
Discussion started by: hakermania
3 Replies

9. UNIX for Advanced & Expert Users

how do you parse 1 line at a time of file1 ie. line(n) each line into new file

File 1 <html>ta da....unique file name I want to give file=>343...</html> <html>da ta 234 </html> <html>pa da 542 </html> and so on... File 2 343 234 542 and so on, each line in File 1 one also corresponds with each line in File 2 I have tried several grep, sed, while .. read, do,... (4 Replies)
Discussion started by: web_developer
4 Replies
Login or Register to Ask a Question