Extracting text between two strings


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extracting text between two strings
# 1  
Old 06-27-2010
Extracting text between two strings

Hi,

I've looked at a few existing posts on this, but they don't seem to work for my inputs.

I have a text file where I want to extract all the text between two strings, every time that occurs.

Eg my input file is

Anna said that she would fetch the bucket.
Anna and Ben moved the bucket.
I would not like Anna to do it.


I was expecting that

Code:
sed -n '/Anna/,/would/p' inputfile > outputfile

would give me

said that she
and Ben moved the bucket.
I

But instead I get back

Anna said that she would fetch the bucket.
Anna and Ben moved the bucket.
I would not like Anna to do it.

What am I missing?

Thanks
# 2  
Old 06-27-2010
Try
Code:
perl -0777 -ne '/(?<=Anna).*(?=would)/s;print $&;' file

or
Code:
perl -0777 -ne '/(?<=Anna).*?(?=would)/s;print $&;' file

These 2 Users Gave Thanks to bartus11 For This Post:
# 3  
Old 06-27-2010
Code:
sed -n '/Anna/,/would/p' inputfile > outputfile

prints the whole line that contains "Anna" upto and including any next line that contains "would"

Last edited by Scrutinizer; 06-27-2010 at 05:44 AM..
# 4  
Old 06-27-2010
Quote:
Originally Posted by Scrutinizer
Code:
sed -n '/Anna/,/would/p' inputfile > outputfile

prints the whole line that contains "Anna" upto and including any next line that contains "would"
From what OP wrote, he already tried that code, and its result didn't meet his needs.
# 5  
Old 06-27-2010
Hi Bartus11, I know, I did not try to provide a solution, I just tried to explain what a sed construction such as he used does, since it did not work as he expected (actually that was what he was asking).
This User Gave Thanks to Scrutinizer For This Post:
# 6  
Old 06-27-2010
Quote:
Originally Posted by Scrutinizer
Hi Bartus11, I know, I did not try to provide a solution, I just tried to explain what a sed construction such as he used does, since it did not work as he expected (actually that was what he was asking).
Sorry for misunderstanding your post Smilie
# 7  
Old 06-27-2010
Thanks all, now I have a slightly improved understanding of sed (and perl as well) Smilie

Bartus11's second bit of perl gives me almost what I want: it gives me the text between the first instance of 'Anna' and the first 'would' after that. But if I have multiple occurrences of 'Anna' and 'would' in my file, how do I get all of them?

Just to clarify, if the text file was

Anna A would Anna B would Anna C would

then I'd want the output to be
A
B
C

and not
A
AB
B
BC
C

or any similar permutation. Should I just get rid of the first occurence in the file and then run Bartus11's second script again (and again and again) until I get no more output? Or is there an elegant way to avoid doing that? (Not that it has to be elegant: I'm quite happy with brute force Smilie )
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Extracting strings at various positions of text file

Hi Team - I hope everyone has been well! I export a file from one of our source systems that gives me more information than I need. The way the file outputs, I need to extract certain strings at different positions on the file and echo them to another file. I can do this in batch easily,... (2 Replies)
Discussion started by: SIMMS7400
2 Replies

2. UNIX for Dummies Questions & Answers

Extracting 22-character strings from text using sed/awk?

Here is my task, I feel sure this can be accomplished with see/awk but can't seem to figure out how. I have large flat file from which I need to extract every case of a pairing of characters (GG) in this case PLUS the previous 20 characters. The output should be a list (which I plan to make... (17 Replies)
Discussion started by: Twinklefingers
17 Replies

3. Shell Programming and Scripting

Extracting text between two strings, multiple instances

Hi experts, Ive got a text file which has the following text which will occur in this format at least one time: +=========================>> Some stuff that evreryone should knnow other stufsjdokajkajokajda aijhjajcdjajcisajcqsqdqwdqad <<=========================+ It is likely that... (8 Replies)
Discussion started by: martin0852
8 Replies

4. Shell Programming and Scripting

Extracting text between two constant strings

Hi All, I have a file whose common patter is like this: .I 1 .U 87049087 .S Some text here too .M This is a text .T Some another text here .P Name of the book .W Some lines of more text. This text needs to be extracted. .A more text goes here too .I 2 (2 Replies)
Discussion started by: shoaibjameel123
2 Replies

5. Shell Programming and Scripting

Extracting text between two strings, first instance only

There are a lot of ways to extract text from between two strings, but what if those strings occur multiple times and you only want the text from the first two strings? I can't seem to find anything to work here. I'm using sed to process the text after it's extracted, so I prefer a sed answer, but... (4 Replies)
Discussion started by: fubaya
4 Replies

6. Shell Programming and Scripting

extracting numbers from strings

Hello all, I am being dumb with this and I know there is a simple solution. I have a file with the follwing lines bc stuff (more)...............123 bc stuffagain (moretoo)............0 bc stuffyetagain (morehere)......34 failed L3 thing..............1 failed this... (2 Replies)
Discussion started by: gobi
2 Replies

7. Shell Programming and Scripting

extracting a set of strings from a text file

i have textfiles that contain a series of lines that look like this: string0 .................................................... column3a column4a string1**384y0439 ..................................... column3b column4b... (2 Replies)
Discussion started by: Deanne
2 Replies

8. Shell Programming and Scripting

Extracting the lines between 2 strings of a file

Hi, I have a sql file and i need to extract the table names used in the sql file using a unix script. If i can extract the lines between the keywords 'FROM' and 'WHERE' in the file, my job is done. can somebody tell me how to do this using a shell script. If u can just let me know, how to... (2 Replies)
Discussion started by: babloo
2 Replies

9. Shell Programming and Scripting

Help with extracting strings from a file

I want to collect the characters from 1-10 and 20-30 from each line of the file and take them in a file in the following format.Can someone help me with this : string1,string2 string1,string2 string1,string2 : : : : (7 Replies)
Discussion started by: cmsdelhi
7 Replies

10. UNIX for Dummies Questions & Answers

Extracting strings

Hi, How do I extract the bytes size string from the ls -l command. (1 Reply)
Discussion started by: hugow
1 Replies
Login or Register to Ask a Question