why post a python solution here?

On Thu, Oct 25, 2018 at 8:58 AM Asad <asad.hasan2...@gmail.com> wrote:

> 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
> --
> To unsubscribe, e-mail: beginners-unsubscr...@perl.org
> For additional commands, e-mail: beginners-h...@perl.org
> http://learn.perl.org/
>

Reply via email to