How to add Xml tags to an existing xml using shell or awk?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to add Xml tags to an existing xml using shell or awk?
# 1  
Old 03-21-2013
How to add Xml tags to an existing xml using shell or awk?

Hi ,

I have a below xml:
Code:
<ns:Body>
<ns:result>
<Date Month="June"  Day="Monday:/>
</ns:result>
</ns:Body>


i have a lookup abc.txtt text file with below details
Code:
Month  June July August
Day    Monday Tuesday Wednesday

I need a output xml with below tags
Code:
<ns:Body>
<ns:result>
<Date Month="June"  Day="Monday:/>
<Date Month="July"  Day="Tuesday:/>
<Date Month="August"  Day="Wednesday:/>
</ns:result>
</ns:Body>

How can i achieve it using awk or shell scripting

Last edited by Franklin52; 03-21-2013 at 07:11 AM.. Reason: Please use code tags for data and code samples
# 2  
Old 03-21-2013
Code:
awk -v max=0 'BEGIN{ print "<ns:Body>\n<ns:result>"; }
/^Month/ {for (i=1;i<=NF;i++) {M[i]=$i;}if(NF>max) {max=NF}}
/^Day/{for (i=1;i<=NF;i++) {D[i]=$i;} if(NF>max) {max=NF} }
END { for (i=2;i<=max;i++) {print "<Date Month=\""M[i]"\"  Day=\""D[i]"\"/>";}
print "</ns:result>\n</ns:Body>"; }' lookup_file


Hope this helps. Smilie
# 3  
Old 04-10-2013
The code worked perfectly. However now i have a new requirement . the value of a particular tag is dynamic . How do i incorporate pattern matchin for a variable in the same code.

my new xml is
Code:
<ns:Body>
<ns:result>
<class classname="date">
<Date Month="June"  Day="Monday:/>
</class>
<class classname="time">
<time minutes="30" seconds="12"/>
</class>
</ns:result>
</ns:Body>

Here the value June is obtained in the following way
Code:
abc="month"
var=x_$abc

the lookup file has entry
Code:
x_month June July August
y_month June august
Day    Monday Tuesday Wednesday

The value if var needs to be used to match against the config file. How do i use the shell variable in awk in this case.

Last edited by Franklin52; 04-10-2013 at 04:31 AM.. Reason: Please use code tags for data and code samples
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to pull multiple XML tags from the same XML file in Shell.?

I'm searching for the names of a TV show in the XML file I've attached at the end of this post. What I'm trying to do now is pull out/list the data from each of the <SeriesName> tags throughout the document. Currently, I'm only able to get data the first instance of that XML field using the... (9 Replies)
Discussion started by: hungryd
9 Replies

2. Shell Programming and Scripting

Compare two xml files while ignoring some xml tags

I've got two different files and want to compare them. File 1 : <response ticketId="944" type="getQueryResults"><status>COMPLETE</status><description>Query results fetched successfully</description><recordSet totalCount="1" type="sms_records"><record id="38,557"><columns><column><name>orge... (2 Replies)
Discussion started by: Shaishav Shah
2 Replies

3. Shell Programming and Scripting

Shell Command to compare two xml lines while ignoring xml tags

I've got two different files and want to compare them. File 1 : HTML Code: <response ticketId="944" type="getQueryResults"><status>COMPLETE</status><description>Query results fetched successfully</description><recordSet totalCount="1" type="sms_records"><record... (1 Reply)
Discussion started by: Shaishav Shah
1 Replies

4. Shell Programming and Scripting

awk and or sed command to sum the value in repeating tags in a XML

I have a XML in which <Amt Ccy="EUR">3.1</Amt> tag repeats. This is under another tag <Main>. I need to sum all the values of <Amt Ccy=""> (Ccy may vary) coming under <Main> using awk and or sed command. can some help? Sample looks like below <root> <Main> ... (6 Replies)
Discussion started by: bk_12345
6 Replies

5. Shell Programming and Scripting

How to add the multiple lines of xml tags before a particular xml tag in a file

Hi All, I'm stuck with adding multiple lines(irrespective of line number) to a file before a particular xml tag. Please help me. <A>testing_Location</A> <value>LA</value> <zone>US</zone> <B>Region</B> <value>Russia</value> <zone>Washington</zone> <C>Country</C>... (0 Replies)
Discussion started by: mjavalkar
0 Replies

6. Shell Programming and Scripting

awk to retrieve the particular value from a same list of xml tags

Hi All, I have the following code in one of my xml file: <com:parameter> <com:name>secretKey</com:name> <com:value>31XA874821172E89B00B1C</com:value> </com:parameter> <com:parameter> <com:name>tryDisinfect</com:name> <com:value>false</com:value> </com:parameter> <com:parameter>... (4 Replies)
Discussion started by: mjavalkar
4 Replies

7. Shell Programming and Scripting

Read content between xml tags with awk, grep, awk or what ever...

Hello, I trying to extract text that is surrounded by xml-tags. I tried this cat tst.xml | egrep "<SERVER>.*</SERVER>" |sed -e "s/<SERVER>\(.*\)<\/SERVER>/\1/"|tr "|" " " which works perfect, if the start-tag and the end-tag are in the same line, e.g.: <tag1>Hello Linux-Users</tag1> ... (5 Replies)
Discussion started by: Sebi0815
5 Replies

8. Shell Programming and Scripting

how to search xml tags using unix shell

Hi All, Good day Here is my data: <Journal> <JournalCode>2</JournalCode> <JournalType>L</JournalType> <JournalEntry>SG</JournalEntry> <JournalAmount>-0.05</JournalAmount> </Journal> Problem: 1) I need to query the above tags in xml. Which is from the header <Journal>... (4 Replies)
Discussion started by: lutinoman
4 Replies

9. Shell Programming and Scripting

How to remove xml namespace from xml file using shell script?

I have an xml file: <AutoData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Table1> <Data1 10 </Data1> <Data2 20 </Data2> <Data3 40 </Data3> <Table1> </AutoData> and I have to remove the portion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" only. I tried using sed... (10 Replies)
Discussion started by: Gary1978
10 Replies

10. Shell Programming and Scripting

script to run shell command and insert results to existing xml file

Hi. Thanks for any help with this. I'm not new to programming but I am new to shell programming. I need a script that will 1. execute 'df -k' and return the volume names with specific text 2. surround each line of the above results in opening and closing xml tags 3. insert the results of step... (5 Replies)
Discussion started by: littlejon
5 Replies
Login or Register to Ask a Question