Extract string from XML


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract string from XML
# 1  
Old 02-11-2013
Scissors Extract string from XML

Hi,

I wish to grep for the first instance of <listen-address> value between the first <server></server> tag in an xml file.

Sample xml:



Code:
.........
    <timeout-seconds>1500</timeout-seconds>
  </jta>
  <server>
    <name>Adminserver_DEV</name>
    <listen-address>myadminhost</listen-address>
  </server>
  <server>
    <name>managed_core</name>
<listen-address>secondadminhost</listen-address>
    <ssl>
      <enabled>false</enabled>
......

Desired Result: myadminhost

If<listen-address></listen-address> is blank or not present in the first <server></server> tag then the desired result should be the hostname of the server excuting the script.

Thank you.!!
# 2  
Old 02-11-2013
Try

Code:
 
awk -F "[<>]" '/listen-address/ && $3{print $3;exit}' file

# 3  
Old 02-11-2013
First Occurance :

Code:
sed -n -e 's/.*<listen-address>\(.*\)<\/listen-address>.*/\1/p' "Your_file.xml" | head -1

Nth Occurance :

Code:
sed -n -e 's/.*<listen-address>\(.*\)<\/listen-address>.*/\1/p' "Your_file.xml" | head -n | tail -1

# 4  
Old 02-12-2013
Try this to print the listen-address in exactly the first <server>...</server> tag, or the hostname if missing/empty:
Code:
awk     'BEGIN {"hostname" | getline HN}
         /<\/server>/ {exit}
         /<server>/   {s=1}
         /<listen-address>/&& s {gsub (/<.?listen-address>| */, "")
                                 LA = $0
                                }
         END            {print LA?LA:HN
                        }
        ' file
myadminhost

This User Gave Thanks to RudiC For This Post:
# 5  
Old 02-15-2013
Quote:
Originally Posted by RudiC
Try this to print the listen-address in exactly the first <server>...</server> tag, or the hostname if missing/empty:
Code:
awk     'BEGIN {"hostname" | getline HN}
         /<\/server>/ {exit}
         /<server>/   {s=1}
         /<listen-address>/&& s {gsub (/<.?listen-address>| */, "")
                                 LA = $0
                                }
         END            {print LA?LA:HN
                        }
        ' file
myadminhost

This is more close to my request as it considers the first <server> tag only. However,

1. I would like read the result in a variable (myhost) and

2. for another tag <listen-port> if missing in the first <server> tag then would like to assign "7001" to "myport" variable.
# 6  
Old 02-15-2013
Something like this:

Code:
 awk -F"[<->]" ' BEGIN { myh="";myp="7001" }
 /<\/server>/ { exit } 
 /<server>/ { s = 1 ; }
 s && /<listen-address>/ {  myh=$3; }  
 /<listen-port>/ {  myp=$3 ;}
 END { print "host:"myh"\t port->"myp }' sample

# 7  
Old 02-15-2013
Quote:
Originally Posted by panyam
Something like this:

Code:
 awk -F"[<->]" ' BEGIN { myh="";myp="7001" }
 /<\/server>/ { exit } 
 /<server>/ { s = 1 ; }
 s && /<listen-address>/ {  myh=$3; }  
 /<listen-port>/ {  myp=$3 ;}
 END { print "host:"myh"\t port->"myp }' sample

But will this populate the hostname command if <listen-address> tag is not found ?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace string in XML file with awk/sed with string from another

Sorry for the long/weird title but I'm stuck on a problem I have. I have this XML file: </member> <member> <name>TransactionID</name> <value><string>123456789123456</string></value> </member> <member> <name>Number</name> ... (9 Replies)
Discussion started by: cozzin
9 Replies

2. Shell Programming and Scripting

How can I extract XML block around matching search string?

I want to extract XML block surrounding search string Ex: print XML block for string "myapp1-ear" surrounded by "<application> .. </application>" Input XML: <?xml version="1.0" encoding="UTF-8"?> <deployment-request> <requestor> <first-name>kchinnam</first-name> ... (16 Replies)
Discussion started by: kchinnam
16 Replies

3. Shell Programming and Scripting

Extract strings from XML files and create a new XML

Hello everybody, I have a double mission with some XML files, which is pretty challenging for my actual beginner UNIX knowledge. I need to extract some strings from multiple XML files and create a new XML file with the searched strings.. The original XML files contain the source code for... (12 Replies)
Discussion started by: milano.churchil
12 Replies

4. Shell Programming and Scripting

To extract a string between two words in XML file

i need to extract the string between two tags, input file is <PersonInfoShipTo AddressID="446311709" AddressLine1="" AddressLine2="" AddressLine3="" AddressLine4="" AddressLine5="" AddressLine6="" AlternateEmailID="" Beeper="" City="" Company="" Country="" DayFaxNo="" DayPhone="" Department=""... (5 Replies)
Discussion started by: Padmanabhan
5 Replies

5. Shell Programming and Scripting

Extract a particular xml only from an xml jar file

Hi..need help on how to extract a particular xml file only from an xml jar file... thanks! (2 Replies)
Discussion started by: qwerty000
2 Replies

6. Shell Programming and Scripting

XML - Split And Extract String between Chars

Hi, I am trying to read the records from file and split into multiple files. SourceFile.txt <?xml version="1.0" encoding="UTF-8"?>... (2 Replies)
Discussion started by: unme
2 Replies

7. Shell Programming and Scripting

Extract value from XML

I have a file like below <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:executeMDXResponse... (9 Replies)
Discussion started by: manas_ranjan
9 Replies

8. Shell Programming and Scripting

to extract string from main string and string comparison

continuing from my previous post, whose link is given below as a reference https://www.unix.com/shell-programming-scripting/171076-shell-scripting.html#post302573569 consider there is create table commands in a file for eg: CREATE TABLE `Blahblahblah` ( `id` int(11) NOT NULL... (2 Replies)
Discussion started by: vivek d r
2 Replies

9. Shell Programming and Scripting

Grep a string from input file and delete next three lines including the line contains string in xml

Hi, 1_strings file contains $ cat 1_strings /home/$USER/Src /home/Valid /home/Review$ cat myxml <projected value="some string" path="/home/$USER/Src"> <input 1/> <estimate value/> <somestring/> </projected> <few more lines > <projected value="some string" path="/home/$USER/check">... (4 Replies)
Discussion started by: greet_sed
4 Replies

10. Shell Programming and Scripting

sed extract from xml

I have an xml file that generally looks like this: "<row><dnorpattern>02788920</dnorpattern><description/></row><row><dnorpattern>\+ 44146322XXXX</dnorpattern><description/></row><row><dnorpattern>40XXX</dnorpattern><description/></row><row><dnorpattern>11</dn... (4 Replies)
Discussion started by: garboon
4 Replies
Login or Register to Ask a Question