time diffrence between two lines in a log file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting time diffrence between two lines in a log file
# 22  
Old 04-29-2009
Quote:
Originally Posted by devtakh
Try to implement this

Code:
        start_time=`echo $var1 | cut -d " " -f4` | sed 's/[:.]//g'
           end_time=`echo $var2 | cut -d " " -f4`| sed 's/[:.]//g'
           h1=`echo $start_time | cut -c1-2`	
    	   m1=`echo $start_time | cut -c3-4`	
           s1=`echo $start_time | cut -c5-6`	
           mm1=`echo $start_time | cut -c7-9`

           h2=`echo $end_time | cut -c1-2`	
           m2=`echo $end_time | cut -c3-4`	
           s2=`echo $end_time | cut -c5-6`
           mm2=`echo $end_time | cut -c7-9`	
    
          mm3=`expr $mm2 - $mm1`
          if [ $mm3 -lt 0 ]		
          then
	  mm3=`expr $mm3 + 1000`	
	  s1=`expr $s1 + 1`		
          fi
          s3=`expr $s2 - $s1`
          if [ $s3 -lt 0 ]		
          then
	  s3=`expr $s3 + 60`	
	  m1=`expr $m1 + 1`	
          fi

         m3=`expr $m2 - $m1`		
         if [ $m3 -lt 0 ]		
         then
	 m3=`expr $m3 + 60`	
	h1=`expr $h1 + 1`	
        fi
        h3=`expr $h2 - $h1`		
        if [ $h3 -lt 0 ]	
        then
	h3=`expr $h3 + 24`	
        fi
    for number in $h3 $m3 $s3 $mm3	
    do
	if [ $number -lt 10 ]	
	then
	    echo "0$number\c" 
	else
	    echo "$number\c"  
	fi

cheers,
Devaraj Takhellambam
When i ran the program i am getting error like

Code:
[root@tsrh4ent shell_perl_script]# ./timediff1.sh
./timediff1.sh: line 25: [: -: integer expression expected
./timediff1.sh: line 31: [: -: integer expression expected
./timediff1.sh: line 38: [: -: integer expression expected
00\c
./timediff1.sh: line 50: [: -: integer expression expected
-\c
./timediff1.sh: line 50: [: -: integer expression expected
-\c
./timediff1.sh: line 50: [: -: integer expression expected
-\c

Thanks
NT
# 23  
Old 04-29-2009
Quote:
Originally Posted by namishtiwari
Hi Rado,

Thank You.
When i ran the script like this it gave me error--

Code:
C:\Perl Script>perl timediff.pl logfile
Use of uninitialized value in print at timediff.pl line 35, <LF> line 17.
start:
end: 2009-04-26T04:06:05
Can't call method "time_zone" on an undefined value at C:/Perl/lib/DateTime.pm l
ine 1231, <LF> line 17.

I put the DateTime module files in Perl Librray.
logfile is also in the directory where i am running the program.
Try this:

Code:
#!/usr/bin/env perl

use strict;
use warnings;
use DateTime;

my $logfile = shift || die "usage: $0 <filename>\n";

my %mon2num = qw(
  Jan 1  Feb 2  Mar 3  Apr 4  May 5  Jun 6
  Jul 7  Aug 8  Sep 9  Oct 10 Nov 11 Dec 12
);

my ( $start_dt, $end_dt );

open LF, $logfile or die "$logfile: $!\n";

while (<LF>) {    
    if (/(?:Entering|Exiting) ARRF_LIB_Evaluate/) {
        $end_dt = '';
        my @dtA = split;
        my @time = split /[:.]/, $dtA[3];
        ( /Exiting/ ? $end_dt : $start_dt ) = DateTime->new(
            year       => $dtA[4],
            month      => $mon2num{ $dtA[1] },
            day        => $dtA[2],
            hour       => $time[0],
            minute     => $time[1],
            second     => $time[2],
            nanosecond => $time[3],
        );

        if ($end_dt && $start_dt) {
            print "start: ", $start_dt, "\n";
            print "end: ",   $end_dt,   "\n";
            my $e = $end_dt->subtract_datetime($start_dt);
            printf
"elapsed: %s year(s), %s month(s), %s week(s), %s day(s), %s hour(s), %s min, %s sec, %s ms\n",
              $e->years, $e->months, $e->weeks, $e->days, $e->hours,
              $e->minutes, $e->seconds, $e->nanoseconds;

        }
    }
}

# 24  
Old 05-04-2009
Hi Rado,

Thank You very much for looking into my problem and providing me the script. I tested it and it worked fine means it executed well without any error. I need to verify the time diffrences here and let you know.
I want to know some explanation here---

Code:
my $logfile = shift || die "usage: $0 <filename>\n";

What is the use of shift here, later part of the (OR ||) i know.
Code:
my ( $start_dt, $end_dt );

Is this fuction parameters. It does not have any name.
Code:
my @dtA = split;

what this line is going to do?
Code:
( /Exiting/ ? $end_dt : $start_dt ) = DateTime->new(

what this line explains?
Code:
my $e = $end_dt->subtract_datetime($start_dt);

Is subtract_datetime some standard function in DateTime.

Thanks in advance.

Thanks
NT
# 25  
Old 05-06-2009
Quote:
Code:
my $logfile = shift || die "usage: $0 <filename>\n";

What is the use of shift here, later part of the (OR ||) i know.
If the first argument passed to the script (i.e. the value returned by the shift function) is true in boolean context,
assign that value to the variable logfile, otherwise exit with error. If you name your input file 0, the code above wont work Smilie

Quote:
Code:
my ( $start_dt, $end_dt );

Is this fuction parameters. It does not have any name.
This is just a declaration, it's the same as:

Code:
my $start_dt;
my $end_dt;

Quote:
Code:
my @dtA = split;

what this line is going to do?
Assign the list returned by the splitting of the $_ variable to the array dtA (date Array). split by default splits on whitespace (after skipping any leading whitespace).


Quote:
Code:
( /Exiting/ ? $end_dt : $start_dt ) = DateTime->new(

what this line explains?
It's the ternary operator: expression ? if true evaluate this:if false evaluate that.

If the current input record ($_) matches the pattern in // assign the returned object to the reference $end_dt, otherwise assign it to the reference $start_dt.

Quote:
Code:
my $e = $end_dt->subtract_datetime($start_dt);

Is subtract_datetime some standard function in DateTime.
Yes, subtract_datetime is one of the available methods in the DateTime class.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Collecting all lines between two time stamp from the log

Can you help me to collect the entire logs between two time stamp. The below awk command collecting the logs only if the line has time stamp. awk '$0>=from && $0<=to' from="150318 23:19:04" to="150318 23:55:04" log file 150318 23:19:04 logentries 150318 23:29:04 logentries 150318... (11 Replies)
Discussion started by: zenkarthi
11 Replies

2. Shell Programming and Scripting

Check/Parse log file's lines using time difference/timestamp

I was looking at this script which outputs the two lines which differs less than one sec. #!/usr/bin/perl -w use strict; use warnings; use Time::Local; use constant SEC_MILIC => 1000; my $file='infile'; ## Open for reading argument file. open my $fh, "<", $file or die "Cannot... (1 Reply)
Discussion started by: cele_82
1 Replies

3. Shell Programming and Scripting

Read multiple lines at a time from file

Hello All, I have a file like below.... dn: cn=user1,ou=org,o=org cn=user1 uid=user1 cn=user2,ou=org,o=org cn=user2 uid=user2 cn=user3,ou=org,o=org cn=user3 cn=user33 uid=user3 cn=user4,ou=org,o=org cn=user4 uid=user4 (6 Replies)
Discussion started by: s_linux
6 Replies

4. Shell Programming and Scripting

Read two lines at time from a file

Hello community, what I need to do is read 2 rows at time from a file. I have this simple solution: File to read: LINE1 LINE2 LINE3 LINE4 LINE5 LINE6 LINE7 LINE8Read routine:#!/bin/ksh sed '1,3d' /out.txt | while read line; do read line2 echo $line $line2 doneResult:LINE1... (5 Replies)
Discussion started by: Lord Spectre
5 Replies

5. Shell Programming and Scripting

Find time difference between two consecutive lines in same file.

Hello I have a file in following format: IV 08:09:07 NM 08:12:01 IC 08:12:00 MN 08:14:20 NM 08:14:15 I need a script to compare time on each line with previous line and show the inconsecutive line. Ex.: 08:12:00 08:14:15 A better way... (6 Replies)
Discussion started by: vilibit
6 Replies

6. Shell Programming and Scripting

Get all lines in a file after particular time

Hi All, I am lookig for a way to get all the lines from a log file which has been updated 5 mins prior to the system time. The log file will be like below: 09:01:00 Started polling 09:01:05 Checking directory test 09:02:00 Error! Cannot access directory test 09:03:00 Polling I get... (8 Replies)
Discussion started by: deepakgang
8 Replies

7. Shell Programming and Scripting

Extracting lines in file based on time

Hi, anyone has any ideas on how do we extract lines from a file with format similiar to this: (based on current time) Jun 18 00:16:50 .......... ............. ............ Jun 18 00:17:59 .......... ............. ............ Jun 18 01:17:20 .......... ............. ............ Jun 18... (5 Replies)
Discussion started by: faelric
5 Replies

8. Shell Programming and Scripting

To find the time difference between two lines of the same log file

Hello Friends, I want to write a script for the following: nlscux62:tibprod> grep "2008 Apr 30 01:" SA_EHV_SPEED_SFC_IN_03-SA_EHV_SPEED_SFC_IN_03-2.log | grep -i post | more 2008 Apr 30 01:01:23:928 GMT +2 SAPAdapter.SA_EHV_SPEED_SFC_IN_03-SA_EHV_SPEED_SFC_IN_03-2 Info AER3-000095 IDOC... (2 Replies)
Discussion started by: satyakam
2 Replies

9. Shell Programming and Scripting

Processing a log file based on date/time input and the date/time on the log file

Hi, I'm trying to accomplish the following and would like some suggestions or possible bash script examples that may work I have a directory that has a list of log files that's periodically dumped from a script that is crontab that are rotated 4 generations. There will be a time stamp that is... (4 Replies)
Discussion started by: primp
4 Replies

10. UNIX for Dummies Questions & Answers

Can any how we can find the time diffrence...?

Hi, I am trying to caluate the time elasped by the job to run.For that i have used the following command: I have one file which contains the following more start.txt 991 STARTED Fri Aug 10 14:04:20 2007 Starting Job JOB_NAME. (...) 1036 STARTED Fri Aug 10 14:04:31 2007 ... (1 Reply)
Discussion started by: Amey Joshi
1 Replies
Login or Register to Ask a Question