Sponsored Content
Top Forums Shell Programming and Scripting Getting the lines between last occurrence of two patterns Post 302167337 by bakunin on Thursday 14th of February 2008 06:20:04 AM
Old 02-14-2008
I hope i have understood you correctly: regular expressions can be made to apply only on a limited group of lines:

Code:
sed -n '/start/,/finish/ {
            p
        }

will start printing lines (the "p" command) on the line containing "start" and continue to print the lines until it finds a line containing "finish", when it will stop printing them, until it again encounters a line containing "start", etc.

To print only the last group of lines is a bit tricky: copy everything in one such group to the holdspace, overwriting it every time a new group starts. Upon reaching the last line output the hold space and you are done.

Code:
sed -n '/^Finished/ {
               H
        }
        $ {
               x
               p
        }
        /^Started/,/^Finished/ {
               /^Started/ {
                     h
               }
               /^Started/ !{
                     H
               }
        }'

I hope this helps.

bakunin
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to get lines in between Patterns?

Hi, I need to create a script that does the following: 1. Read the file for the occurrences of "EXECUTE" and "END" strings. There will be several occurrences of EXECUTE and END strings on the file. 2. The resulting lines in #1, needs to be searched for the word... (11 Replies)
Discussion started by: racbern
11 Replies

2. Shell Programming and Scripting

Searching patterns in 1 file and deleting all lines with those patterns in 2nd file

Hi Gurus, I have a file say for ex. file1 which has 3500 lines in it which are different account numbers and another file (file2) which has 230000 lines in it. I want to read all the lines in file1 and delete all those lines from file2 which has that same pattern as in file1. I am not quite... (4 Replies)
Discussion started by: toms
4 Replies

3. Shell Programming and Scripting

How can I get the lines between two patterns?

hi, I have the following file hello world this is to say bye to everyone so bye I want to get the lines from hello to the first bye inclusive into another file? how can I do this (11 Replies)
Discussion started by: JamesByars
11 Replies

4. Shell Programming and Scripting

Extracting text between two patterns 1 and 2 and pattern2 should be second occurrence of the file

Hi All, I have a small query. I have a file containing the following lines File 1: 29-Jul-2011 GMT Static data requires update <Extraction should start here> ----------- ----------- -------------------- ----------------------- ----------- <should stop here> Pattern1 will be time... (2 Replies)
Discussion started by: gangii87
2 Replies

5. Shell Programming and Scripting

Sed/awk print between different patterns the first occurrence

Thanks for the help yesterday. I have a little modification today, I am trying the following: i have a log file of a webbap which logs in the following pattern: 2011-08-14 21:10:04,535 blablabla ERROR Exception1 blablabla bla bla bla bla 2011-08-14... (2 Replies)
Discussion started by: ppolianidis
2 Replies

6. Shell Programming and Scripting

[Solved] Sed/awk print between patterns the first occurrence

Guys, I am trying the following: i have a log file of a webbap which logs in the following pattern: 2011-08-14 21:10:04,535 blablabla ERROR blablabla bla bla bla bla 2011-08-14 21:10:04,535 blablabla ERROR blablabla bla bla bla ... (6 Replies)
Discussion started by: ppolianidis
6 Replies

7. Shell Programming and Scripting

How to output all lines following Nth occurrence of string

Greetings experts. Searched the forums (perhaps not hard enough?) - Am searching for a method to capture all output from a log file following the nth occurrence of a known string. Background: Using bash, I want to monitor my Oracle DB alert log file. The script will count the total # of... (2 Replies)
Discussion started by: cjtravis
2 Replies

8. Shell Programming and Scripting

UNIX help to print 50 lines after every 3rd occurrence pattern till end of file

I need help with extract/print lines till stop pattern. This needs to happen after every 3rd occurrence of start pattern and continue till end of file. Consider below is an example of the log file. my start pattern will be every 3rd occurrence of ERROR_FILE_NOT_FOUND and stop pattern will be... (5 Replies)
Discussion started by: NSS
5 Replies

9. UNIX for Beginners Questions & Answers

Delete multiple lines between blank lines containing two patterns

Hi all, I'm looking for a way (sed or awk) to delete multiple lines between blank lines containing two patterns ex: user: alpha parameter_1 = 15 parameter_2 = 1 parameter_3 = 0 user: alpha parameter_1 = 15 parameter_2 = 1 parameter_3 = 0 user: alpha parameter_1 = 16... (3 Replies)
Discussion started by: ce9888
3 Replies

10. UNIX for Beginners Questions & Answers

How to print lines from a files with specific start and end patterns and pick only the last lines?

Hi, I need to print lines which are matching with start pattern "SELECT" and END PATTERN ";" and only select the last "select" statement including the ";" . I have attached sample input file and the desired input should be as: INPUT FORMAT: SELECT ABCD, DEFGH, DFGHJ, JKLMN, AXCVB,... (5 Replies)
Discussion started by: nani2019
5 Replies
col(1)							      General Commands Manual							    col(1)

Name
       col - filter reverse line feeds

Syntax
       col [-options]

Description
       The command reads the standard input and writes the standard output.  It performs the line overlays implied by reverse line feeds (ESC-7 in
       ASCII) and by forward and reverse half line feeds (ESC-9 and ESC-8, respectively).  The command is particularly useful for filtering multi-
       column output made with the command of and for filtering output resulting from the preprocessor.

       Although  accepts half line motions in its input, it does not normally output them.  Instead, text that would appear between lines is moved
       to the next lower full line boundary.

       The control characters SO (ASCII code 017) and SI (ASCII code 016) are assumed to start and end text in an alternate  character	set.   The
       character  set (primary or alternate) associated with each printing character read is remembered.  On output, SO and SI characters are gen-
       erated where necessary to maintain the correct treatment of each character.

       The command normally converts white space to tabs to shorten printing time.  If the -h option is given, this conversion is suppressed.

       On input, the only control characters accepted are <space>, <backspace>, <tab>, <return>, <newline>, etc...  The VT character is an  alter-
       nate  form  of  full reverse linefeed, included for compatibility with earlier programs of this type. All other non-printing characters are
       ignored.

Options
       -b     Assumes that the output device does not have backspacing.

       -f     Suppresses moving half lines to the next full line.

       -h     Suppresses conversion of white space to tabs.

       -p     Forces through unchanged any unknown escape sequences that are found in its input. This option should be used with care.

       -x     Suppresses conversion of white space to tabs (same as -h).

Restrictions
       Cannot back up more than 128 lines.
       No more than 800 characters, including backspaces, on a line.

See Also
       tbl(1), nroff(1)

																	    col(1)
All times are GMT -4. The time now is 04:10 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy