Hi ,
Yes i have the code :
import re
import datetime
from datetime import timedelta
Header = "*****************************************************"
f3 = open ( r"D:\QI\logA.txt", 'r' )
string = f3.read ()
regex = re.compile ( "\n" )
st = regex.sub ( " ", string )
st1 = st.split ( " " )
if re.search ('ERR-1:', st ):
x = re.findall ( "(\w{3})\s+([0-9]{2})\s+(\d+):(\d+):(\d+)\s+(\d+)", st )
j = x[0][0] + " "+ x[0][1]+" " + x[0][2] +":"+ x[0][3]+":" +
x[0][4]+" " + x[0][5]
h = x[1][0] + " "+ x[1][1]+" "+ x[1][2] +":" + x[1][3] +":"+
x[1][4] +" "+ x[1][5]
y = datetime.datetime.strptime ( j, '%b %d %H:%M:%S %Y' )
print y
k = datetime.datetime.strptime ( h, '%b %d %H:%M:%S %Y' )
print k
f4 = open ( r"D:\QI\logC11.txt", 'r' )
string1 = f4.read ()
reg = re.compile ( "\n" )
newst = reg.sub ( " ", string1 )
newst1 = newst.split ( " " )
if re.search ( "ERR-2", newst ):
a = re.findall ( "\d\d/\d\d/\d\d\s[012][0-9]:[0-5][0-9]:[0-5][0-9]", newst )
for i in range ( len ( a ) ):
newtime = datetime.datetime.strptime ( a[i], '%m/%d/%y %H:%M:%S' )
if newtime > y and newtime < k:
print "Install patch1"
if re.search ( "ERR-3", newst ):
a = re.findall ( "\d\d/\d\d/\d\d\s[012][0-9]:[0-5][0-9]:[0-5][0-9]", newst )
for i in range ( len ( a ) ):
newtime = datetime.datetime.strptime ( a[i], '%m/%d/%y %H:%M:%S' )
if newtime > y and newtime < k:
print newtime, y, k
print "Install patch2"
==============================================================================================
output i get :
*Install patch1 - wrong solution
2018-10-22 10:21:23 2018-10-22 10:21:15 2018-10-22 10:21:25
Install patch2 - correct solution *
On Thu, Oct 25, 2018 at 6:56 PM Jim Gibson <jimsgib...@gmail.com> wrote:
> (Please reply to the list.)
>
> If you have written code that extracts the date and time from the ‘LOG
> flle opened’ lines in the log file, then please show us your code. You seem
> to be asking other people to write your program for you. You will get
> better help if you appear to be making an effort to solve these problems
> yourself.
>
> Anyone wishing to get help from a forum such as beginners@perl.org would
> do well to read this website on how to ask smart questions:
>
> <http://www.catb.org/~esr/faqs/smart-questions.html>
>
> Now, to address your problem:
>
> If you have a starting time and an ending time for a window within which
> you wish to print lines from a log file, you can use a flag variable to
> indicate when the lines you are reading are within that window. The
> pseudo-logic would be something like this:
>
> 1.initialize print flag to false
> 2. Save starting and ending times in variables
> 3. loop to read or process sequential lines in the file
> a. See if line contains time
> b. If it does, extract time
> c. Compare time in line to starting time
> d. If line time is greater than or equal to start time, set print flag
> to true
> e. If line time is greater than ending time, set print flag to false
> f. If print flag is true print line
> g. End of loop — process next line
>
> If you need help with any of these steps, please show us your code, what
> your code is doing, and what you expect your code to do that it is not
> doing.
>
> Thanks.
>
> > On Oct 24, 2018, at 10:50 PM, Asad <asad.hasan2...@gmail.com> wrote:
> >
> > Hi Jim/All,
> >
> > I have already done that now the issue is how do I print
> the lines from file2 only between start $t2 and <$t3 then process these
> lines is next step ?
> > Please share the code if you have .
> >
> > Thanks,
> >
> >
> > On Thu, Oct 25, 2018 at 11:04 AM Jim Gibson <jimsgib...@gmail.com>
> wrote:
> >
> >
> > > On Oct 24, 2018, at 9:54 PM, Asad <asad.hasan2...@gmail.com> wrote:
> > >
> > > Thank all now I am able to progress :
> > >
> > > file1 i am able to extract the start and end timestamp
> > > file 2 i am able to extract the timestamp
> > >
> > > used the following
> > > my $t1 = Time::Piece->strptime('Feb 23 01:10:28 2018', '%b %d %H:%M:%S
> %Y'); coming from file1
> > >
> > > my $t2 = Time::Piece->strptime('02/23/18 01:10:33', '%m/%d/%y
> %H:%M:%S'); coming from file2
> > >
> > > my $t3 = Time::Piece->strptime('Feb 23 01:10:36 2018', '%b %d %H:%M:%S
> %Y'); coming from file 1
> > >
> > > if ($t2 > $t1 and $t2 < $t3) { ... } till here it working fine
> > >
> > > now I would like to print all lines from file2 starting from t2
> 02/23/18 01:10:33 till very next timestamp which will be greater than t3 :
> > >
> > >
> > >
> > > for example the file2 would look like this:
> > >
> > >
> ===========================================================================================================
> > >
> > > LOG file opened at 02/23/18 01:10:33
> > >
> > > ERR-05007: Warning: Intra source concurrency disabled because the
> preprocessor option is being used.
> > >
> > > Field Definitions for table OPATCH_XML_INV
> > >
> > > eject rows with all null fields
> > >
> > > Fields in Data Source:
> > >
> > >
> > >
> > > ERR-04095:failed: Unable to create patchObject
> > >
> > > Possible causes are:
> > >
> > > "
> > >
> > > LOG file opened at 04/26/18 06:10:33
> > >
> > >
> ===========================================================================================================
>
> > >
> > > This logfile may have other time but i would to extract only the above
> lines because messages occured between t1 and t3 after I extract these i
> want to print the error lines for example ERR-05007
> > >
> > > the issue I am facing if there are multiple error in the file it is
> printing for each occurance of ERR-05007 instead it should print only the
> error lines between t1 and t3 from file2
> > >
> > > Please advice ,
> > >
> > > thanks,
> >
> > For each line is the file, use a regular expression to look for lines
> starting with ‘LOG file opened at’ and extract the time that follows in
> that line. Then, use Time::Piece to create an object of that class using
> the date/time extracted. Then, you can compare the time in that line to
> your start and stop times in $t2 and $t3 (or is it $t1 and $t3?).
> >
> >
> > Jim Gibson
> >
> > --
> > To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> > For additional commands, e-mail: beginners-h...@perl.org
> > http://learn.perl.org/
> >
> >
> >
> >
> > --
> > Asad Hasan
> > +91 9582111698
>
> Jim Gibson
>
>
>
>
--
Asad Hasan
+91 9582111698
Patching tool version 12.2.0.1.0 Production on Mon Oct 22 10:21:15 2018
verify_queryable_inventory returned ERR-1: Latest xml inventory is not loaded
into table
Prereq check failed, exiting without installing any patches.
Patching tool complete on Mon Oct 22 10:21:25 2018
LOG file opened at 04/26/18 06:11:52
ERR-2: OS message: No child processes
operation "wait", location "skudmi:prp:6"
LOG file opened at 10/22/18 09:10:25
ERR-3: patchObjectPossible causes are:"
Trim whitespace same as SQL Loader
LOG file opened at 10/22/18 10:21:23
ERR-3: patchObjectPossible causes are:"
Trim whitespace same as SQL Loader
LOG file opened at 10/22/18 10:22:25
ERR-3: patchObjectPossible causes are:"
Trim whitespace same as SQL Loader
--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/