How to print the lines between the two lines?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to print the lines between the two lines?
# 1  
Old 06-28-2011
How to print the lines between the two lines?

Hi friends,
Please help me in this...

lets say in the below program
Code:
...........
...........

Start
"Hello"
"welcome to this world"
END
...................
...................
Start
"Hi"
"Welcome to C Program"
END
...................
...................

In this how to print the lines between Start and END?

Last edited by Franklin52; 06-30-2011 at 11:59 AM.. Reason: Please use code tags for code and data samples, thank you
# 2  
Old 06-28-2011
Try this,
Code:
sed -n '/Start/,/END/p' <inputfilename>


Last edited by Franklin52; 06-28-2011 at 09:16 AM.. Reason: Please use code tags for code and data samples, thank you
# 3  
Old 06-28-2011
If you don't want the delimiting lines to be printed, you can do something like that :
Code:
awk '/Start/ { ok=1 } /END/ { ok=0 } ok' inputfile

Jean-Pierre.
# 4  
Old 06-28-2011
Guess aigles wanted something like this..
Code:
awk '/Start/ {getline; ok=1 } /END/ { ok=0 } ok' inputfile

# 5  
Old 06-28-2011
Opps, thanks michaelrozar17

Another version that doesn't needs a getline :
Code:
nawk '/END/ { ok=0 } ok ; /Start/ { ok=1 }' inputfile

Jean-Pierre.
# 6  
Old 06-28-2011
Code:
 
perl -0ne 'print $1 if /Start(.*)END/sg' input

# 7  
Old 06-28-2011
Quote:
Originally Posted by karthik537
how to print the lines between Start and END?
Quote:
Originally Posted by Rksiva
Try this,
Code:
sed -n '/Start/,/END/p' <inputfilename>

Quote:
Originally Posted by aigles
Code:
nawk '/END/ { ok=0 } ok ; /Start/ { ok=1 }' inputfile

The sed solution, as mentioned above, prints out the delimiting lines. Both the sed and awk solutions will start printing lines as soon as they see a line matching "Start"; they will not wait until the matching "END" is found. This could be relevant if one wants to strictly limit output to sections bounded on both ends by the respective patterns.

In case it's of any use, here's a sed solution that does not print the delimiting lines and that insures that the tail of any printed text is /END/ delimited:
Code:
sed -n '/^START$/,/^END$/{/^END$/{s/.*//; x; s/\nSTART\n//p; d;}; H;}'

Regards,
Alister

---------- Post updated at 12:00 PM ---------- Previous update was at 11:49 AM ----------

Quote:
Originally Posted by getmmg
Code:
 
perl -0ne 'print $1 if /Start(.*)END/sg' input

Hi, getmmg:

Using the following sample data, for me your suggestion yields nothing (0 bytes of output). Is there something in that one-liner that may not be supported in perl 5.8.6 (it's an old OS X Tiger 10.4.11 machine)? I skimmed over a couple of the perldelta pods for later releases, but nothing jumped out at me.

My sample data:
Code:
START
yes1
yes2
END
no
START
END
START
yes3
yes4
yes5
END
no
no
START
no
no

Expected output:
Code:
yes1
yes2
yes3
yes4
yes5

It's not important, but I'm curious to know. Any ideas?

Disclaimer: When I last regularly hacked with perl, references were new! Smilie

Regards,
Alister

Last edited by alister; 06-28-2011 at 01:40 PM.. Reason: Tightened the regular expressions with anchors
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. UNIX for Beginners Questions & Answers

Print number of lines for files in directory, also print number of unique lines

I have a directory of files, I can show the number of lines in each file and order them from lowest to highest with: wc -l *|sort 15263 Image.txt 16401 reference.txt 40459 richtexteditor.txt How can I also print the number of unique lines in each file? 15263 1401 Image.txt 16401... (15 Replies)
Discussion started by: spacegoose
15 Replies

3. UNIX for Dummies Questions & Answers

awk - (URGENT!) Print lines sort and move lines if match found

URGENT HELP IS NEEDED!! I am looking to move matching lines (01 - 07) from File1 and 77 tab the matching string from File2, to File3.txt. I am almost done but - Currently, script is not printing lines to File3.txt in order. - Also the matching lines are not moving out of File1.txt ... (1 Reply)
Discussion started by: High-T
1 Replies

4. Shell Programming and Scripting

Print n lines from top and n lines from bottom of all files with .log extenstion

Oracle Linux 6.4 In a directory I have more than 300 files with the extension .log I want the first 5 and last 5 lines of these .log files to be printed on screen with each file's name. Expected output : Printing first 5 and last 5 lines of FX_WT_Feb8_2014.log !! Authentication... (7 Replies)
Discussion started by: kraljic
7 Replies

5. Shell Programming and Scripting

Use sed to print first n lines and last n lines of an output.

Use sed to print first n lines and last n lines of an output. For example: n=10 Can it be done? Thanks. (7 Replies)
Discussion started by: carloszhang
7 Replies

6. Shell Programming and Scripting

sed print all lines between second and third identical lines

I am trying to extract a table of data (mysql query output) from a log file. I need to print everything below the header and not past the end of the table. I have spent many hours searching with little progress. I am matching the regexp +-\{99\} with no problem. I just can't figure out how to print... (5 Replies)
Discussion started by: godfreydanials
5 Replies

7. Shell Programming and Scripting

Print lines between two lines after grep for a text string

I have several very large file that are extracts from Oracle tables. These files are formatted in XML type syntax with multiple entries like: <ROW> some information more information </ROW> I want to grep for some words, then print all lines between <ROW> AND </ROW>. Can this be done with AWK?... (7 Replies)
Discussion started by: jbruce
7 Replies

8. Shell Programming and Scripting

print first few lines, then apply regex on a specific column to print results.

abc.dat tty cpu tin tout us sy wt id 0 0 7 3 19 71 extended device statistics r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device 0.0 133.2 0.0 682.9 0.0 1.0 0.0 7.2 0 79 c1t0d0 0.2 180.4 0.1 5471.2 3.0 2.8 16.4 15.6 15 52 aaaaaa1-xx I want to skip first 5 line... (4 Replies)
Discussion started by: kchinnam
4 Replies

9. Shell Programming and Scripting

print lines AFTER lines cointaining a regexp (or print every first and fourth line)

Hi all, This should be very easy but I can't figure it out... I have a file that looks like this: @SRR057408.1 FW8Y5CK02R652T length=34 AGCAGTGGTATCAACGCAGAGTAAGCAGTGGTAT +SRR057408.1 FW8Y5CK02R652T length=34 FIIHFF6666?=:88@@@BBD:::?@ABBAAA>8 @SRR057408.2 FW8Y5CK02TBMHV length=52... (1 Reply)
Discussion started by: kmkocot
1 Replies

10. Shell Programming and Scripting

AIX equivalent to GNU grep's -B and -A [print lines after or before matching lines]

Hi folks I am not allowed to install GNU grep on AIX. Here my code excerpt: grep_fatal () { /usr/sfw/bin/gegrep -B4 -A2 "FATAL|QUEUE|SIGHUP" } Howto the same on AIX based machine? from manual GNU grep ‘--after-context=num’ Print num lines of trailing context after... (4 Replies)
Discussion started by: slashdotweenie
4 Replies
Login or Register to Ask a Question