Using sed to get a substring


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using sed to get a substring
# 1  
Old 02-03-2009
Using sed to get a substring

Hi,
I have looked all over for this. I am attempting to get a the substring of a string using sed since it seemed the best solution for this.

For example my string is: "zzz foo to you and bar123 or foo"

I would like to extract the text between "and" and "or" (it could be anything, but that was my test string). "and" and "or" are unique in the string and the example is a single line, but it would be good to have it work on an arbitrary chunk of text.

To do so I thought I could do a match from the beginning of the string and just replace from the start to and with nothing. Then do the same from the reverse:

echo "zzz foo to you and bar123 or foo" | sed -e 's/[\*]and//' | more

(I was piping the text into sed vs a file just for easy of copying and pasting, but it will be the output of another process.)

Now, I tried various things that I thought would do a wildcard match "from the beginning until 'and'".

Suggestions as to where I went wrong? (Or am I missing an obvious way to do this with sed/awk/grep/egrep etc?)

:-)

Thanks
# 2  
Old 02-04-2009
Quote:
Originally Posted by CentaurAtlas
Hi,
I have looked all over for this. I am attempting to get a the substring of a string using sed since it seemed the best solution for this.

For example my string is: "zzz foo to you and bar123 or foo"

I would like to extract the text between "and" and "or" (it could be anything, but that was my test string). "and" and "or" are unique in the string and the example is a single line, but it would be good to have it work on an arbitrary chunk of text.

To do so I thought I could do a match from the beginning of the string and just replace from the start to and with nothing. Then do the same from the reverse:

echo "zzz foo to you and bar123 or foo" | sed -e 's/[\*]and//' | more

There's no need for sed (and even less need for more):

Code:
string="zzz foo to you and bar123 or foo"
temp=${string##*and}
printf "%s\n" "${temp%%or*}"

Quote:
(I was piping the text into sed vs a file just for easy of copying and pasting, but it will be the output of another process.)

If the ouput of the process is a single line, save the output of the other process in a variable then use the above lines:

Code:
string=$( another_process ... )

If there will be multi-line output, use sed or awk, e.g.:

Code:
another_process | sed 's/.*and\(.*\)or.*/\1/'

# 3  
Old 02-17-2009
Thanks for the tips. ;-)

Quote:
Originally Posted by cfajohnson

There's no need for sed (and even less need for more):

Code:
string="zzz foo to you and bar123 or foo"
temp=${string##*and}
printf "%s\n" "${temp%%or*}"


If the ouput of the process is a single line, save the output of the other process in a variable then use the above lines:

Code:
string=$( another_process ... )

If there will be multi-line output, use sed or awk, e.g.:

Code:
another_process | sed 's/.*and\(.*\)or.*/\1/'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed question for substring search

i have this data where i am looking for a two digit number 01,03,05 or 07. if not found i should detect that . this sed command gives me the matching rows . I want the opposite , i want the rows if the match is NOT found . also the sed command is only looking for 01, can i add 03, 05, 07 to... (7 Replies)
Discussion started by: boncuk
7 Replies

2. Shell Programming and Scripting

sed - replacing a substring containing a hyphen

I'm attempting to replace a substring that contains a hyphen and not having much success, can anyone point out where i'm going wrong or suggest an alternative. # echo /var/lib/libvirt/images/vm888b-clone.qcow | sed -e 's|vm888-clone|qaz|g' /var/lib/libvirt/images/vm888b-clone.qcow (1 Reply)
Discussion started by: squrcles
1 Replies

3. Shell Programming and Scripting

Substring Problem with sed . . .

Greetings. I'm looking to isolate the first occurrence of an arbitrary substring which may be present at any particular line in a given file. The enclosing end markers for the target in our thought problem are string" and ". The complete string and surrounding text could look something like... (3 Replies)
Discussion started by: LinQ
3 Replies

4. Shell Programming and Scripting

sed optimized for replace substring

Hi All, I have this text file IR7013903069171012INT10171211864 Axxxxxxxxxx12345dddddddddddd Byyyyyyyyy99999999ddddddddd IR7013903069171012TOS10171211865 Cffffffffff5745747ehdefffffffffgggggggg Dyyyyyyyyy99999999ddddddddd I need to 1) find lines where the substring IR70139 is... (5 Replies)
Discussion started by: gio123bgg
5 Replies

5. Shell Programming and Scripting

Using sed to find a substring from a file

HI All, I have a file which looks like below ./Prod_id/rel/prod/lib.a ./Some_text/rel/fld/lib.a ./Some_text/deb/detail/lib.a ./Some_text/deb/err/lib.a ./Some_text/rel/prod/lib.a ./Some_text/rel/fld/lib.a ./Some_text/deb/detail/lib.a ./Some_text/deb/err/lib.a I want... (5 Replies)
Discussion started by: anand.shah
5 Replies

6. Shell Programming and Scripting

Substring using cut/awk/sed

Hi Gurus,I have a seemingly simple problem but struggling with it.It is as follows : I/p string - ABCDEFGHIJ20100909.txt desired o/p - AB,DEF,20100909,ABCDEFGHIJ20100909.txt How to achieve it ?Thanks in advance. Please use code tags, thank you (20 Replies)
Discussion started by: sumoka
20 Replies

7. Shell Programming and Scripting

Making substring with sed

Input: You can easily do this by highlighting your code. How can i get the substring from index 9 to 12 using sed? (6 Replies)
Discussion started by: cola
6 Replies

8. Shell Programming and Scripting

Sed and SubString

Hi Folks, I am here with a simple doubt. I am having a flat file in which I want to replace the characters from say 5 to 15 as some text. Flat file contains a single line. For example 01MRRAJESH21000RAJESH INDUSTRIES In the above line pos 16-21 is Rajesh, I want to search for the... (4 Replies)
Discussion started by: dinesh1985
4 Replies

9. Shell Programming and Scripting

Substring using sed or awk

I am trying to get a substring from a string stored in a variable. I tried sed with a bit help from this forum, but not successful. Here is my problem. My string is: "REPLYFILE=myfile.txt" And I need: myfile.txt (everything after the = symbol). My string is: "myfile.txt.gz.20091120.enc... (5 Replies)
Discussion started by: jamjam10k
5 Replies

10. Shell Programming and Scripting

Sed extract substring on (OS X)

On OS 10.4.11 I have filenames like: 670711 SA T2 v1-1_DS_EF.doc CT_670520 AM T1 v1-2_DS_EF.doc CT_670716 - 2 SA T4 v1-2_DS_EF.doc CT_670713 SA T3 v1-1_DS_EF.doc 670421 PA DYP1 v1-1_DS_EF.doc CT_670425 PA DYP2 v1-1_DS_EF.doc CT_670107 RA T3 v1-2_DS_EF.doc CT_670521 AM T2 v1-2_DS_EF.doc... (3 Replies)
Discussion started by: mlommel
3 Replies
Login or Register to Ask a Question