Getting a string from between two patterns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Getting a string from between two patterns
# 1  
Old 04-28-2011
Getting a string from between two patterns

I need something to strip out some text from a string. I basically have a variable that will always be in the same pattern but will be a different length. Example below. I need to somehow extract the text between <Strat> and </Source> from example below. I can't load it into a file for audit reasons so can only pass a variable to whatever command I use. The string length in between will also regularly change.

XXX,XXX,XXX,XXX<Strat>CALIBRI</Source>


I need the output to simply be "CALIBRI" however this text can be all sorts of lengths. Any suggestions welcome
# 2  
Old 04-28-2011
Code:
echo 'XXX,XXX,XXX,XXX<Strat>CALIBRI</Source>'|sed 's/.*>\(.*\)<.*/\1/'

or:
Code:
echo 'XXX,XXX,XXX,XXX<Strat>CALIBRI</Source>'| awk -F"[<>]" '{print $3}'

# 3  
Old 04-28-2011
Excellent. Thanks.
# 4  
Old 04-28-2011
Something similar ...

Code:
echo "XXX,XXX,XXX,XXX<Strat>CALIBRI</Source>" |sed -e s/.*\<Strat\>// | sed s/\<\\/Source\>//

# 5  
Old 04-28-2011
Unfortunately both of Franklin's solutions do rather make an assumption that there won't be any other chevrons on the line. These aren't ideal solutions.

I prefer the answer submitted by palaisvr, although it doesn't require two separate invocations of sed and should be tidied up a little bit:
Code:
echo 'XXX,XXX,XXX,XXX<Strat>CALIBRI</Source>' | sed -e 's=^.*<Strat>==' -e 's=</Source>.*$=='

Best regards,
Mark.
# 6  
Old 04-28-2011
using perl,
Code:
perl -nle 'print $1 if /<Strat>(.+?)<\/Source>/;'  inputfile

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Get string between 2 patterns

Hi all, I wish to get the string between u' and ' This is the test.txt file: PLAY *********************************** GATHERING FACTS ***************************** OK: TASK: **************************** changed: TASK: *************************** ok: => {"msg":... (11 Replies)
Discussion started by: celine
11 Replies

2. Shell Programming and Scripting

String search between patterns using sed

Hi, I am trying to find a way to get sed/awk/grep to help me find a string in a log file that exists between two datestamps and then print the preceding datestamp up to the next datestamp. Here is an example of my logfile: +++ 2013/03/28 17:01:37.085 SIGNALING HIGH ACTIVE Failure Response... (5 Replies)
Discussion started by: raytx
5 Replies

3. Shell Programming and Scripting

Fetching the string using different patterns

HI, Please help me with the following problem: I have an xml file with the following lines <NameValuePair> <name>SharedResources/JDBC/Admin/password</name> <value>rjmadmin</value> </NameValuePair> <NameValuePair> ... (4 Replies)
Discussion started by: tejastrikez
4 Replies

4. Shell Programming and Scripting

parsing filename and grabbing specific string patterns

Hi guys...Wow I just composed a huge post and it got erased as I was logged out automatically Anyways I hope someone can help me out here. So the task I'm working on is like this I have a bunch of files that I care about sitting in a directory say $HOME/files Now my job is to go and loop... (6 Replies)
Discussion started by: rukasetsuna
6 Replies

5. UNIX for Dummies Questions & Answers

replace multiple patterns in a string/filename

This should be somewhat simple, but I need some help with this one. I have a bunch of files with tags on the end like so... Filename {tag1}.ext Filename2 {tag1} {tag2}.ext I want to hold in a variable just the filename with all the " {tag}" removed. The tag can be anything so I'm looking... (4 Replies)
Discussion started by: kerppz
4 Replies

6. Shell Programming and Scripting

need help in string patterns

Hi, i have following lines of code which is properly working. CAT1="${InputFile}CAT_*0?????" CAT2="${InputFile}CAT_*0?????" CountRecords(){ integer i=1 while ]; do print P$i `nawk 'END {print NR}' $1 ` >> ${OutputPath}result.txt & i=i+1 shift done } CountRecords "$CAT1"... (8 Replies)
Discussion started by: malikshahid85
8 Replies

7. Shell Programming and Scripting

need help in string patterns

Hi, i have a directory /u02.i have 2 files in it like abc1.gz abc2.gz i want to store file pattern in a variable like f1="abc?" i don't want to take .gz in variable rather i want .gz appended when i need to unzip the file like gunzip $f1 Can you please help me how to... (3 Replies)
Discussion started by: malikshahid85
3 Replies

8. Shell Programming and Scripting

To extract the string between two patterns

Sample input: Loading File System Networking in nature Closing the System now i need to extract the patterns between the words File and Closing: i.e. sample output: System Networking in Nature Thanks in advance !!!!!!!!!!!!!!!!! (6 Replies)
Discussion started by: aajan
6 Replies

9. UNIX for Dummies Questions & Answers

Counting patterns in a shell string

Hello, I am writing a shell script and I need to find a way to count the number of whitespaces in a string. Eg: NAME="Bob Hope" I am looking for a way to count the number of whitespaces in this string. So a command that would take this string and return 1. Or take "First Middle Last"... (3 Replies)
Discussion started by: kevin80
3 Replies
Login or Register to Ask a Question