cnraja
January 29, 2012, 12:54am
1
Hi,
My requirement is to find a text and replace it with another in a XML file.
I am new to Unix,Please provide some suggestion to achieve.
Find:
<Style ss:ID="ColumnHeader1">
Replace with:
<Style ss:ID="ColumnHeader1">
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous"ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
Thanks In Advance
sed '/ColumnHeader1.*/ { i\
<Borders>
<Border ss:Position="Bottom" ss:LineStyle="Continuous"ss:Weight="1"/>
<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
</Borders>
}'
val='<Borders>\n<Border ss:Position="Bottom" ss:LineStyle="Continuous"ss:Weight="1"/>\n<Border ss:Position="Top"
ss:LineStyle="Continuous" ss:Weight="1"/>\n</Borders>'
sed '/<Style ss:ID="ColumnHeader1">/ a '"$val"' ' infile
To make the changes inline, use -i option
sed -i '/<Style ss:ID="ColumnHeader1">/ a '"$val"' ' infile
--ahamed
cnraja
January 29, 2012, 11:00pm
4
Hi Ahamed,
I am getting the below error while executing your solution.
sed: Function /<Style ss:ID="ColumnHeader1">/ a <Borders>\n<Border ss:Position="Bottom" ss:LineStyle="Continuous"ss:Weight="1"/>\n<Border ss:Position="Top" cannot be parsed.
Can you look into this?
You should use the "$val" in sed. Did you do that? And moreover it should be one single line literally separated by \n.
--ahamed