Sponsored Content
Top Forums Shell Programming and Scripting Compute value from more than three consecutive rows Post 302971159 by RavinderSingh13 on Saturday 16th of April 2016 06:35:48 PM
Old 04-16-2016
Hello Kathy wang,

Sorry, I couldn't understand the error. Could you please mention it more clear with complete information of your requirement and how you are getting error please. For explaination part of code, following may help you in same then.
Code:
awk 'NR==1{                                                                                     ##### When awk is reading very first line of Input_file, then do following actions.
                print;                                                                          ##### print the complete very first line here.
                next                                                                            ##### next is a built in awk keyword, which tells control NOT to go further and skip all next written statements for current(which is very first line) now.
          }
          {
                split($3, A,":");                                                               ##### Now this statement will be executed apart from the first line, I am using split built in function of awk so split 3rd field of the line whose delimiter is ":" colon and storing it into an array named A.
                if($4/$NF>=3){                                                                  ##### Now as per your requirement, I am checking here whenever 4th field is 3 times of $NF(which indicates value of LAST field of each LINE.) field of the line, if this condition is TRUE then do following actions.
                                if(site_id==$1){                                                ##### Here I am checking for a variable named site_id if it has the sae value as previous one or NOT, if it has same value as the previous line ones then execute following statement.
                                                count++                                         ##### Here increasing the value of variable named count one more now. 
                                               };
                                if(!previous)  {                                                ##### Here I am verfiying the value of variable named previous, previous is a variable which will hold the value of your time's(3rd field) 1st value, so that we could make sure the difference between last line(whenever it was satisfying the condition where $4/$NF>=3 is TRUE) and current line's TIME have only 1 hour or min difference.
                                                previous=A[1]                                   ##### Setting up value of array named previous to array A's 1st value here.
                                               };
                                if(A[1]-previous==1){                                           ##### Checking here time differences of the current time's value and the previous time's value, so difference should be one as per your requirement.
                                                        P=P?P ORS $0 OFS count:$0 OFS count;    ##### If above condition is TRUE then I am setting up the value of variable named P to current line's value with the site id's count. Moreover if P already has value then I am making sure P's value should be appended here successfully.
                                                        Q++;                                    ##### Increasing the value of variable named Q here to one, WHERE variable Q is meant for keeping track if 3 consecutive lines have come to satisfy all conditions then it should print the value of P.
                                                        previous=A[1];                          ##### Setting up variable named previous to the array A's 1st value of current line(time value, do do compare operation again for next line.).
                                                        site_id=$1                              ##### Setting up site_id value to $1(first field) of current line.
                                                    }
                                else           {                                                ##### In case difference condition of A[1]-previous is NOT TRUE then perform following actions please. 
                                                        previous=A[1];                          ##### I am setting value of previous variable to A's first value.
                                                        site_id=$1                              ##### Now setting up site_id's value to first field too.
                                               }
                             }
                else         {                                                                  ##### In case condition of $4/$NF>=3 is NOT TRUE then do following actions.
                                previous=A[1];                                                  ##### Setting up variable named previous's value to array A's 1st value for next line's comparisions.
                                P=Q=""                                                          ##### Nulliying the values of variabes named P and Q. Because already condition os FALSE and we need 3 consecutive lines to be satisfied with the conditions so no need of variable named P and Q any value here.
                             };
                if(Q==3)     {                                                                  ##### When variable Q's value is equal to 3 then do following actions.
                                print P;                                                        ##### printing the value of P, which actually will have those 3 consecutive lines which are satisfying all the conditions successfully.
                                P=""                                                            ##### Nullyfing the value of variable P, so that OLD values shouldn't print again while printing the new ones.
                             };
          }
   '    Input_file                                                                              ##### Mentioning the Input_file here.

Hope this helps you.

Thanks,
R. Singh
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

compute total from a text file

Hi, I've encountered a problem with a perl and ksh script that totals a certain field in a text file. The computed total of the script is 295540304 but the expected is 297959288, a 2 million difference. The KSH script reads from bottom to top, and the discrepancy started on line 47 (1279th MAN... (1 Reply)
Discussion started by: rsf01
1 Replies

2. UNIX for Advanced & Expert Users

CPU Usage at another Compute Node?

Hi, I am trying to get the cpu usage of a job/process. The machine that has these jobs is a cluster with 1 master node and 10 compute nodes. Now, the complexity is that not all jobs are on the master node. So, in order to get the cpu usage of a job at another node, I have to ssh into it and... (0 Replies)
Discussion started by: davidfrank
0 Replies

3. Shell Programming and Scripting

How to capture 2 consecutive rows when a condition is true ?

Hi All, i have an input below. As long as "x= 1" , i would want to capture 2 lines using sed or awk for eg : 0001 x= 1 $---------------------------------..-.--.. 0001 tt= 137 171 423 1682 2826 0 Pls help. Thanks in advance. Note that the number of lines in each block do... (37 Replies)
Discussion started by: Raynon
37 Replies

4. Shell Programming and Scripting

to compute diskspace

Guys, have any idea for the script like this? also to compute w/ decimal. thanks a=10 b=20 c=30 d=40 if a < b then ( a -b)*1024 = free space b + (c -d) = total space if a > b then (b / d)*1024 = cpu (3 Replies)
Discussion started by: kenshinhimura
3 Replies

5. Shell Programming and Scripting

compute compilation time using script

Hi, I use this script to compute compilation time several time to get system performance and compare different system: #!/bin/sh # measure the different between time before and # after the compilation of benchmark # Start at iteration 1 num=1 while do # Add one to the iteration... (3 Replies)
Discussion started by: zainab
3 Replies

6. Web Development

How to compute previous and next buttons?

I have a project to migrate my club's membership database from Access to web based using MySQL/PHP, but I have a problem I can't get my head around and would appreciate some help... Background... I want to be able to display each member's data on screen and add a Previous and Next button to move... (2 Replies)
Discussion started by: JerryHone
2 Replies

7. Shell Programming and Scripting

remove consecutive duplicate rows

I have some data that looks like, 1 3300665.mol 3300665 5177008 102.093 2 3300665.mol 3300665 5177008 102.093 3 3294015.mol 3294015 5131552 102.114 4 3294015.mol 3294015 5131552 102.114 5 3293734.mol 3293734 5129625 104.152 6 3293734.mol ... (13 Replies)
Discussion started by: LMHmedchem
13 Replies

8. Shell Programming and Scripting

Compute Difference and Edit second, third columns

Hi Friends, My input file is like this chr1 100 200 chr1 300 330 chr1 2000 2000 chr1 5000 5000 chr2 7790 7890 chr2 8000 8000 If the difference of third and second columns is zero, then subtract 500 from second column and add 500 to the third column. So, my output would be chr1... (1 Reply)
Discussion started by: jacobs.smith
1 Replies

9. Shell Programming and Scripting

Compute in milisecond by use of mktime

Hi, I want to calculate diff b/w these starttime and endtime with use of mktime. I need response time in milisecond. I am using mktime to get these times. last three digits are in milisecond Starttime 2013-04-03 08:54:19,989 End time 2013-04-03 08:54:39,389 (9 Replies)
Discussion started by: random_thoughts
9 Replies

10. UNIX for Beginners Questions & Answers

Forward Display from compute node

Hello, sorry if this is an easy thing, but I tried to make it run the whole morning, but it doesn't work so far... I am logged in on a visualization node of a high performance cluster. On this node I can run several gui-based software for the postprocessing of my cfd-data. As the... (1 Reply)
Discussion started by: Shlaeae
1 Replies
All times are GMT -4. The time now is 02:58 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy