How to get value between patterns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to get value between patterns
# 1  
Old 03-24-2009
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>
<PRODUCT_TYPE>QN</PRODUCT_TYPE><SERVER_NAME>testserver3</SERVER_NAME><FLAVOR>Unix</FLAVOR><OS>Windows NT</OS><CPU>2</CPU>

Output shud be

DN testserver1 Windows Windows NT 4
PN testserver2 Windows Windows NT 3
QN testserver3 Windows Windows NT 2

Basically i want to print values between <> & </>

Thanks
Sirabee
# 2  
Old 03-24-2009
Code:
perl -nle'print join" ",m|<[^>]*>([^<]*)</[^>]*>|g' infile

# 3  
Old 03-24-2009
Quote:
Originally Posted by radoulov
Code:
perl -nle'print join" ",m|<[^>]*>([^<]*)</[^>]*>|g' infile


Works Perfect, anything in sed or awk?, just curious

Last edited by sirababu; 03-24-2009 at 06:24 PM..
# 4  
Old 03-24-2009
may be this will help
Code:
awk -F"[></]" '{print $3" "$8" "$13" "$18" "$23}' filename

# 5  
Old 03-24-2009
You can use sed to remove tags and leave the values behind by using the literal '<' and '>' character along with the '\w' (match any word character like a-zA-Z-_ etc.)
Code:
sed -e 's:<\w*>::g' -e 's:</\w*>: :g' input_file > output_file

# 6  
Old 03-25-2009
Code:
sed 's/<[^>]*>/ /g' filename

# 7  
Old 03-25-2009
Code:
$ awk -F "[<>]" '{print $3,$7,$11,$15,$19}' file1
DN testserver1 Windows Windows NT 4
PN testserver2 Windows Windows NT 3
QN testserver3 Unix Windows NT 2

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

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? (11 Replies)
Discussion started by: minifish
11 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