nileshjsr has asked for the wisdom of the Perl Monks concerning the following question:

I am new to Perl scripting and I have file contains

File: input.log DATE1=2018-05-24 DATE=2018-05-20 SETTING USER RELATED INFORMATION .. SETTING USER RELATED INFORMATION .. Database Connection Information Database server = DB2/LINUXX8664 10.5.6 SQL authorization ID = ORV5_ETL Local database alias = CHADDB AIR_TCD_AIR_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 761 1186102 2018-05-21-00.00.00 773 1226970 2018-05-22-00.00.00 746 1158361 2018-05-23-00.00.00 767 1225759 2018-05-24-00.00.00 727 1123991 5 record(s) selected. DB20000I The TERMINATE command completed successfully. SETTING USER RELATED INFORMATION .. Database Connection Information Database server = DB2/LINUXX8664 10.5.6 SQL authorization ID = ORV5_ETL Local database alias = CHADDB AIR_TCD_CCN:VOICE_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 4554 7578729 2018-05-21-00.00.00 4533 7533879 2018-05-22-00.00.00 4399 7349718 2018-05-23-00.00.00 4597 7781008 2018-05-24-00.00.00 4411 7344806 5 record(s) selected.

I have to extract below Output but it is reading all content writing in output file.

Output should be as below:

AIR_TCD_AIR_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 761 1186102 2018-05-21-00.00.00 773 1226970 2018-05-22-00.00.00 746 1158361 2018-05-23-00.00.00 767 1225759 2018-05-24-00.00.00 727 1123991 AIR_TCD_CCN:VOICE_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 4554 7578729 2018-05-21-00.00.00 4533 7533879 2018-05-22-00.00.00 4399 7349718 2018-05-23-00.00.00 4597 7781008 2018-05-24-00.00.00 4411 7344806

2018-06-03 Athanasius removed erroneous code tags

Replies are listed 'Best First'.
Re: Extract lines between two pattern appears multiple times in a file
by jimpudar (Pilgrim) on May 30, 2018 at 16:08 UTC

    Hello nileshjsr and welcome to the monastery.

    I can tell you tried to format your question with HTML tags, but like others have said your data is difficult to decipher.

    However, I think I can sort of understand what you are asking for.

    Usually I would use the flip-flop operator for this kind of thing, but since you don't want the last line of the blocks I just reimplemented a slightly different version.

    Let me know if this works for you...

    #! /usr/bin/perl use strict; use warnings; my $print; while (<DATA>) { $print = 1 if /^AIR_TCD/; $print = 0 if $print && /record\(s\) selected/; print if $print; } __DATA__ DATE1=2018-05-24 DATE=2018-05-20 SETTING USER RELATED INFORMATION .. SETTING USER RELATED INFORMATION .. ; Database Connection Information ;Database server = DB2/LINUXX8664 10.5.6 ;SQL authorization ID = ORV5_ETL ;Local database alias = CHADDB AIR_TCD_AIR_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 761 1186102 2018-05-21-00.00.00 773 1226970 2018-05-22-00.00.00 746 1158361 2018-05-23-00.00.00 767 1225759 2018-05-24-00.00.00 727 1123991 ; 5 record(s) selected. DB20000I The TERMINATE command completed successfully. SETTING USER RELATED INFORMATION .. ; Database Connection Information ;Database server = DB2/LINUXX8664 10.5.6 ;SQL authorization ID = ORV5_ETL ;Local database alias = CHADDB AIR_TCD_CCN:VOICE_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 4554 7578729 2018-05-21-00.00.00 4533 7533879 2018-05-22-00.00.00 4399 7349718 2018-05-23-00.00.00 4597 7781008 2018-05-24-00.00.00 4411 7344806 ; 5 record(s) selected.

    Output:

    AIR_TCD_AIR_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 761 1186102 2018-05-21-00.00.00 773 1226970 2018-05-22-00.00.00 746 1158361 2018-05-23-00.00.00 767 1225759 2018-05-24-00.00.00 727 1123991 AIR_TCD_CCN:VOICE_CS5 ------------------------------------------- 1 2 3 ------------------- ----------- ----------- 2018-05-20-00.00.00 4554 7578729 2018-05-21-00.00.00 4533 7533879 2018-05-22-00.00.00 4399 7349718 2018-05-23-00.00.00 4597 7781008 2018-05-24-00.00.00 4411 7344806

    Best,

    Jim

    πάντων χρημάτων μέτρον έστιν άνθρωπος.

      Thanks Jim. It has been worked currently

Re: Extract lines between two pattern appears multiple times in a file
by AnomalousMonk (Archbishop) on May 30, 2018 at 15:03 UTC

    nileshjsr: Your problem is not that you're not using code tags, but rather that you're using too many of them! Your posts now look like

    <code>File: input.log</code> <code>DATE1=2018-05-24</code> <code>DATE= +2018-05-20</code> <code>SETTING USER RELATED INFORMATION ..</code>
    when they should look like
    <code> File: input.log DATE1=2018-05-24 DATE=2018-05-20 SETTING USER RELATED INFORMATION .. with each line of data represented by a line in this block </code>
    (of course, I'm guessing about how your data breaks out into lines). Note that there's now a little  [download] link after each block of code.

    Also, please do add some question to your post. Also, please do not post yet another node with fixed content; instead, please go back and edit/fix your original post; please see How do I change/delete my post? for details.


    Give a man a fish:  <%-{-{-{-<

Re: Extract lines between two pattern appears multiple times in a file
by hippo (Archbishop) on May 30, 2018 at 10:07 UTC

    Welcome to the monastery, nileshjsr. It will help your cause no end if you could edit your post and put the contents of the file within <code> ... </code> tags. That way we can clearly see and download the data.

    While you are editing the post you could also add your question. Thanks.