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?
# 8  
Old 06-28-2011
A variation of alister's sed solution with awk (and with a more ugly sample data file) :
Code:
awk '/START/ { m=""; ok=1; next } /END/ && ok { if (m) printf "%s", m; ok=0  } ok { m=m $0 "\n" }' data.txt

Sample data file
Code:
no
END
no
START
yes1
yes2
END
no
START
END
START
no
START
yes3
yes4
yes5
END
no
no
START
no
no

Output:
Code:
yes1
yes2
yes3
yes4
yes5

Jean-Pierre.
# 9  
Old 06-30-2011
Hi Friends,

Thanks to all of u for ur spontaneous replies....
A small requirement added in my query is that...

A file is undergoing changes phase by phase...so I will comment the changes of respective phase as below
Code:
..............
..............

/* Start: Phase1/001 */
Hi
Hello
Yes
No
/* End: Phase1/001 */
...........
...........
...........
/* Start: Phase1/002 */
Yes
No
World
/* End: Phase1/002 */
.........
.........
/* Start: Phase2/001*/
Boys
Girls
Parents
Child
/* End: Phase2/001 */
.......
......

Now If I input the values of phase no(1,2,3...) and the modification no.(001/002/003....) in the respective phase, I have to get the output for those respective phase changes...

For Eg: If I input Phase:1 and modification no:2, I have to get the output as
Code:
/* Start: Phase1/002 */
Yes
No
World
/* End: Phase1/002 */

---------- Post updated 06-30-11 at 11:24 AM ---------- Previous update was 06-29-11 at 06:54 PM ----------

Hi Friends...plz do help me

Last edited by Franklin52; 06-30-2011 at 12:00 PM.. Reason: Please use code tags, thank you
# 10  
Old 06-30-2011
Try something like that :
Code:
phase=1
mod=002
awk -v pm="$phase/$mod" '
BEGIN {
    Start = "^/\\* Start: Phase" pm;
    End   = "^/\\* End: Phase" pm;
}
$0 ~ Start,$0 ~ End
' inputfile

jean-Pierre.
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