get the value between 2 patterns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting get the value between 2 patterns
# 1  
Old 04-07-2008
get the value between 2 patterns

hello experts,

I want to get the value between 2 patterns.
ex. get hello in <line>hello</line>
Any suggestions?
any sed, grek, awk commands?
# 2  
Old 04-07-2008
If the patterns are always on a single line, awk or sed should work fine. If this is a more complex file, look in the Perl FAQ (section 6 IIRC) for some canned solutions.

This is a very frequently recurring question in these forums; try searching some recent threads.

Code:
sed -n 's/.*>\([^<>]*\)<.*/\1/p' file

# 3  
Old 04-07-2008
Code:
echo "<line>hello</line>" | sed -e 's?\(</.*>\)??' -e 's?\(<.*>\)??'

# 4  
Old 04-07-2008
Another approach:

Code:
sed 's/.*>\(.*\)<.*/\1/' file

Regards
# 5  
Old 04-07-2008
Code:
 echo '<line>hello</line>' | awk -F"\>|\<" '{print $3}'

# 6  
Old 04-07-2008
Except that will also get anything outside of the separators. And you don't need the parens if you don't use them for backreferences. Anyway, it would be useful to have more precise requirements. Is there text outside of the separators? Do they span multiple lines? Are there other <tags> which are not to be used as separators? Can there be multiple occurrences of the tag pairs on one line?

Code:
sed -n 's%.*<line>%%; T; s%</line>.*%%p' file

Edit: I was referring to shamrock's solution. Wow, this is a popular thread.
# 7  
Old 04-07-2008
Quote:
Originally Posted by era
Except that will also get anything outside of the separators. And you don't need the parens if you don't use them for backreferences. Anyway, it would be useful to have more precise requirements. Is there text outside of the separators? Do they span multiple lines? Are there other <tags> which are not to be used as separators? Can there be multiple occurrences of the tag pairs on one line?

Code:
sed -n 's%.*<line>%%; T; s%</line>.*%%p' file

Edit: I was referring to shamrock's solution. Wow, this is a popular thread.
yes, there are more text outside the separators. I'm trying to change the command people provide me to make it more suitable for my case.
and maybe my sed is too old, I get unrecognized command with
sed -n 's%.*<line>%%; T; s%</line>.*%%p'

Thanks you

file:
<b>asdfasdfasdf</b>
<line>hello</line>
<a>asdfasdfasdf</c>

output:
hello
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash - Find files excluding file patterns and subfolder patterns

Hello. For a given folder, I want to select any files find $PATH1 -f \( -name "*" but omit any files like pattern name ! -iname "*.jpg" ! -iname "*.xsession*" ..... \) and also omit any subfolder like pattern name -type d \( -name "/etc/gconf/gconf.*" -o -name "*cache*" -o -name "*Cache*" -o... (2 Replies)
Discussion started by: jcdole
2 Replies

2. Shell Programming and Scripting

Find matched patterns and print them with other patterns not the whole line

Hi, I am trying to extract some patterns from a line. The input file is space delimited and i could not use column to get value after "IN" or "OUT" patterns as there could be multiple white spaces before the next digits that i need to print in the output file . I need to print 3 patterns in a... (3 Replies)
Discussion started by: redse171
3 Replies

3. Shell Programming and Scripting

bash many patterns

hi guys in my bash script I call wget to check for valid links like this: wget -q "$1" -O- | grep -ow "href=\"http://*\"" | sed -e 's/href=//g' -e 's/"//g' but this only finds the urls starting with http.What if I also want to find the urls starting with Https and https? (2 Replies)
Discussion started by: vlm
2 Replies

4. UNIX for Dummies Questions & Answers

counting_word_excluding patterns

Hi everyone, I am new to this forum. So I apologize if my question is too basic. I am trying to find the amount of words I have in a large number of XML files. Of course I do not want to count XML tags (<.*?>). But i do not know how to do it .:wall: Is there an easy way? (By the way I am working... (7 Replies)
Discussion started by: mcptrad
7 Replies

5. Shell Programming and Scripting

grep value between two patterns

Hi All, I've been trying solve this with a simple command but not having much luck. I have a file like this: Line 1: random_description 123/alert/high random_description2 356/alert/slow Line 2: random_description3 654/alert/medium Line 3: random_description4 234/alert/critical I'm... (7 Replies)
Discussion started by: joe19
7 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

Searching patterns in 1 file and deleting all lines with those patterns in 2nd file

Hi Gurus, I have a file say for ex. file1 which has 3500 lines in it which are different account numbers and another file (file2) which has 230000 lines in it. I want to read all the lines in file1 and delete all those lines from file2 which has that same pattern as in file1. I am not quite... (4 Replies)
Discussion started by: toms
4 Replies

9. Shell Programming and Scripting

How to get value between patterns

Gurus, If is my file <PRODUCT_TYPE>DN</PRODUCT_TYPE><SERVER_NAME>testserver1</SERVER_NAME><FLAVOR>Windows</FLAVOR><OS>Windows NT</OS><CPU>4</CPU> <PRODUCT_TYPE>PN</PRODUCT_TYPE><SERVER_NAME>testserver2</SERVER_NAME><FLAVOR>Windows</FLAVOR><OS>Windows NT</OS><CPU>3</CPU> ... (6 Replies)
Discussion started by: sirababu
6 Replies

10. UNIX for Advanced & Expert Users

3 patterns in one line

hello, I want to write a script to find all the files that contain 3 specific patterns. example: shows the files containing any line that contain pattern1, pattern2 and pattern3, but the patterns can be in any order as long as they exist in the line. can I do that with grep? thank you (1 Reply)
Discussion started by: bashuser
1 Replies
Login or Register to Ask a Question