Update particular tag in a XML file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Update particular tag in a XML file
# 8  
Old 06-24-2016
You seem to have at least heard of redirections, but >> is MEANT to append to files, so above described behaviour is no surprise. Don't use the single > to the input file either as it would destroy the target and thus the input before it can be read.
Try > TMP && mv TMP file (which might lose the original file's attributes).
This User Gave Thanks to RudiC For This Post:
# 9  
Old 06-24-2016
If the command:
Code:
perl -pe 'BEGIN{$/="<name>"} if(/XXX<\/name/){s/Delay/Down/g}' file.xml

produces the data you want to appear in your file on the screen, and there are one or more hard links to file.xml, the following should do what you want safely:
Code:
perl -pe 'BEGIN{$/="<name>"} if(/XXX<\/name/){s/Delay/Down/g}' file.xml > file.xml$$ && cp file.xml$$ file.xml && rm file.xml$$

If you are absolutely positive that there will never be more than one hard link to file.xml and you don't care about preserving modes and ownership of the original file, you can change:
Code:
cp file.xml$$ file.xml && rm file.xml$$

in the above to:
Code:
mv file.xml$$ file.xml

to make it run a little bit faster, and avoid the period of time while the file is being copied where someone reading file.xml might find an incomplete file.
This User Gave Thanks to Don Cragun For This Post:
# 10  
Old 06-24-2016
Quote:
Originally Posted by Viswanatheee55
[...]
Code:
perl -pe 'BEGIN{$/="<name>"} if(/XXX<\/name/){s/Delay/Down/g}' file.xml >> file.xml

If I use the above command it appends the updated value to file.xml, I want to overwrite the content.

Thanks,
Viswa
Just add the highlighted -i flag. Do not include the >> file.xml part.
Code:
perl -i -pe 'BEGIN{$/="<name>"} if(/XXX<\/name/){s/Delay/Down/g}' file.xml


Last edited by Aia; 06-24-2016 at 11:26 PM..
This User Gave Thanks to Aia For This Post:
# 11  
Old 06-24-2016
Works fine.

Thank you so much

Viswa
# 12  
Old 06-24-2016
@viswanath:

Please try to use single redirection symbol in your code like below.

Code:
perl -pe 'BEGIN{$/="<name>"} if(/XXX<\/name/){s/Delay/Down/g}' file.xml > file.xml


Quote:
Originally Posted by Viswanatheee55
All the above commands works fine but it just print as "down" in the screen, I want to update the value in file "file.xml"

Thanks,
Viswa

---------- Post updated at 12:58 AM ---------- Previous update was at 12:37 AM ----------

Code:
perl -pe 'BEGIN{$/="<name>"} if(/XXX<\/name/){s/Delay/Down/g}' file.xml >> file.xml

If I use the above command it appends the updated value to file.xml, I want to overwrite the content.

Thanks,
Viswa




Moderator's Comments:
Mod Comment Please use code tags as required by forum rules!
# 13  
Old 06-24-2016
Quote:
Originally Posted by mad man
@viswanath:

Please try to use single redirection symbol in your code like below.

Code:
perl -pe 'BEGIN{$/="<name>"} if(/XXX<\/name/){s/Delay/Down/g}' file.xml > file.xml

NO! Do not do this. The first thing that the above command does is reduce file.xml to length zero. The perl command then reads that zero length file and, finding no data to process, leaves you with all of your original data deleted.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grepping multiple XML tag results from XML file.

I want to write a one line script that outputs the result of multiple xml tags from a XML file. For example I have a XML file which has below XML tags in the file: <EMAIL>***</EMAIL> <CUSTOMER_ID>****</CUSTOMER_ID> <BRANDID>***</BRANDID> Now I want to grep the values of all these specified... (1 Reply)
Discussion started by: shubh752
1 Replies

2. Shell Programming and Scripting

Moving XML tag/contents after specific XML tag within same file

Hi Forum. I have an XML file with the following requirement to move the <AdditionalAccountHolders> tag and its content right after the <accountHolderName> tag within the same file but I'm not sure how to accomplish this through a Unix script. Any feedback will be greatly appreciated. ... (19 Replies)
Discussion started by: pchang
19 Replies

3. Shell Programming and Scripting

Extracting the tag name from an xml file

Hi, My requirement is something like this, I have a xml file that contains some tags and nested tags, <n:tag_name1> <n:sub_tag1>val1</n:sub_tag1> <n:sub_tag2>val2</n:sub_tag2> </n:tag_name1> <n:tag_name2> <n:sub_tag1>value</n:sub_tag1> ... (6 Replies)
Discussion started by: Little
6 Replies

4. Shell Programming and Scripting

To search for a particular tag in xml and collate all similar tag values and display them count

I want to basically do the below thing. Suppose there is a tag called object1. I want to display an output for all similar tag values under heading of Object 1 and the count of the xmls. Please help File: <xml><object1>house</object1><object2>child</object2>... (9 Replies)
Discussion started by: srkmish
9 Replies

5. Emergency UNIX and Linux Support

Trying to parse a xml file for only one tag

I have a xml file in where I need to parse only a particular tag and print the output in the shell script. Here is the tag info in the xml file <dp:file> This is dp file output </dp:file> Output should be printed as This is dp file output. Please help.Thank you. (5 Replies)
Discussion started by: chandu123
5 Replies

6. 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

7. Shell Programming and Scripting

How to retrieve the value from XML tag whose end tag is in next line

Hi All, Find the following code: <Universal>D38x82j1JJ </Universal> I want to retrieve the value of <Universal> tag as below: Please help me. (3 Replies)
Discussion started by: mjavalkar
3 Replies

8. Shell Programming and Scripting

Changing particular tag value of xml file

Hi All, I have number of xml file like : ______________________________________________________ <?xml version="1.0" standalone="no"?> <!-- Created by Symology Ltd on 13/02/2012 - USER_BATCH_ID 0011091684 --> <!-- RECIPIENT_URL: HTTP://194.168.0.81:3408 --> <EToNrequest ... (7 Replies)
Discussion started by: krsnadasa
7 Replies

9. Shell Programming and Scripting

XML tag replacement from different XML file

We have 2 XML file 1. ORIGINAL.xml file and 2. ATTRIBUTE.xml files, In the ORIGINAL.xml we need some modification as <resourceCode>431048</resourceCode>under <item type="Manufactured"> tag - we need to grab the 431048 value from tag and pass it to database table in unix shell script to find the... (0 Replies)
Discussion started by: balrajg
0 Replies

10. Shell Programming and Scripting

How To get the data from a tag in XML File

Hi I have a XML file in which data is loaded from a relational table and the column names are tags in the xml file which is shown below. ... (8 Replies)
Discussion started by: naughty21
8 Replies
Login or Register to Ask a Question