I want to change the false in Node 1 to true. How do I do that?
<Node1>
<Usage>false</Usage>
<Url>ABC</Url>
</Node1>
<Node2>
<Usage>false</Usage>
<Url>DEF<Url>
</Node2>
I want to change the false in Node 1 to true. How do I do that?
<Node1>
<Usage>false</Usage>
<Url>ABC</Url>
</Node1>
<Node2>
<Usage>false</Usage>
<Url>DEF<Url>
</Node2>
Try:
/tmp # echo "
> <Node1>
> <Usage>false</Usage>
> <Url>ABC</Url>
> </Node1>
>
> <Node2>
> <Usage>false</Usage>
> <Url>DEF<Url>
> </Node2>" | sed -e 's/false/true/g'
<Node1>
<Usage>true</Usage>
<Url>ABC</Url>
</Node1>
<Node2>
<Usage>true</Usage>
<Url>DEF<Url>
</Node2>
or:
sed -e 's/false/true/g' file > file.new
Regards,
Nir
sed -e "/<Node1>/,/<\/Node1>/{s_<Usage>false</Usage>_<Usage>true</Usage>_}" file.old > file.new
I am getting command garbled
sed 's#<Usage>false#<Usage>true#g' myFile
Thanks but it converts both the values to true
Remember, I just want to change the value in Node1
Vino's solution does what you want.
sed -e "/<Node1>/,/<\/Node1>/{
s_<Usage>false</Usage>_<Usage>true</Usage>_
}" file.old > file.new
You could drop the {} as well.
sed -e "/<Node1>/,/<\/Node1>/s_<Usage>false</Usage>_<Usage>true</Usage>_" file.old > file.new
Thanks one more question
When I use file.old >file.new I get a new file
but I want the results to be interpreted in file.net itself
I can copy this file.new to file.old but file is very big and copying would be a performance issue
Please help