Replace Char in XML Base on Condition

HI All

Here is my Input file A.

I want to add extra char in the line base on below condition.

1> if Below second line is

<xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>

then

<xn:VsDataContainer id= 

will be

<xn:VsDataContainer_id_1= 

2 > if Below second line is

<xn:vsDataType>vsDataEUtranFreqRelation</xn:vsDataType>

then this <xn:VsDataContainer id= will be

<xn:VsDataContainer_id_2=

3 > if Below second line is

<xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>

then this

<xn:VsDataContainer id=

will be

<xn:VsDataContainer_id_3=

Input and changes highlighted in color

Input :-

<?xml version="1.0" encoding="UTF-8"?>
<bulkCmConfigDataFile xmlns:un="utranNrm.xsd"
    xmlns:es="EricssonSpecificAttributes.13.25.xsd"
    xmlns:xn="genericNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns="configData.xsd">
    <fileHeader fileFormatVersion="32.615 V4.5" vendorName="Ericsson"/>
    <configData dnPrefix="Undefined">
        <xn:SubNetwork id="ONRM_ROOT_MO_R">
            <xn:MeContext id="CCL01736">
                <xn:ManagedElement id="1">
                    <xn:VsDataContainer id="1">
                        <xn:attributes>
                            <xn:vsDataType>vsDataENodeBFunction</xn:vsDataType>
                            <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                            <es:vsDataENodeBFunction/>
                        </xn:attributes>
                        <xn:VsDataContainer id="CCL01736_7A_1">
                            <xn:attributes>
                                <xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>
                                <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                <es:vsDataEUtranCellFDD/>
                            </xn:attributes>
                            <xn:VsDataContainer id="5780">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranFreqRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranFreqRelation/>
                                </xn:attributes>
                                <xn:VsDataContainer id="310410-660010-15">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranCellRelation>
                                    <es:cellIndividualOffsetEUtran>0</es:cellIndividualOffsetEUtran>
                                    <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
                                <xn:VsDataContainer id="310410-660010-16">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranCellRelation>
                                    <es:cellIndividualOffsetEUtran>0</es:cellIndividualOffsetEUtran>
                                   <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
   			    </xn:VsDataContainer>
                        </xn:VsDataContainer>
			<xn:VsDataContainer id="CCL01736_9A_1">
                            <xn:attributes>
                                <xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>
                                <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                <es:vsDataEUtranCellFDD/>
                            </xn:attributes>
                            <xn:VsDataContainer id="5780">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranFreqRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranFreqRelation/>
                                </xn:attributes>
                                <xn:VsDataContainer id="CCL01736_7A_1">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <OfLastModification>
                                    <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
                            </xn:VsDataContainer>
                        </xn:VsDataContainer>
                        <xn:VsDataContainer id="CCL01736_9C_1">
                            <xn:attributes>
                                <xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>
                                <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                <es:vsDataEUtranCellFDD/>
                            </xn:attributes>
                            <xn:VsDataContainer id="5780">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranFreqRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranFreqRelation/>
                                </xn:attributes>
                                <xn:VsDataContainer id="CCL01736_7C_1">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranCellRelation>
                                    <es:cellIndividualOffsetEUtran>0</es:cellIndividualOffsetEUtran>
                                    <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
                            </xn:VsDataContainer>
                        </xn:VsDataContainer>
                    </xn:VsDataContainer>
                </xn:ManagedElement>
            </xn:MeContext>
         </xn:SubNetwork>
    </configData>
    <fileFooter dateTime="2014-03-19T14:36:50Z"/>
</bulkCmConfigDataFile>

Output :-

<?xml version="1.0" encoding="UTF-8"?>
<bulkCmConfigDataFile xmlns:un="utranNrm.xsd"
    xmlns:es="EricssonSpecificAttributes.13.25.xsd"
    xmlns:xn="genericNrm.xsd" xmlns:gn="geranNrm.xsd" xmlns="configData.xsd">
    <fileHeader fileFormatVersion="32.615 V4.5" vendorName="Ericsson"/>
    <configData dnPrefix="Undefined">
        <xn:SubNetwork id="ONRM_ROOT_MO_R">
            <xn:MeContext id="CCL01736">
                <xn:ManagedElement id="1">
                    <xn:VsDataContainer id="1">
                        <xn:attributes>
                            <xn:vsDataType>vsDataENodeBFunction</xn:vsDataType>
                            <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                            <es:vsDataENodeBFunction/>
                        </xn:attributes>
                        <xn:VsDataContainer_id_1="CCL01736_7A_1">
                            <xn:attributes>
                                <xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>
                                <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                <es:vsDataEUtranCellFDD/>
                            </xn:attributes>
                            <xn:VsDataContainer_id_2="5780">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranFreqRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranFreqRelation/>
                                </xn:attributes>
                                <xn:VsDataContainer_id_3="310410-660010-15">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranCellRelation>
                                    <es:cellIndividualOffsetEUtran>0</es:cellIndividualOffsetEUtran>
                                    <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
                                <xn:VsDataContainer_id_3="310410-660010-16">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranCellRelation>
                                    <es:cellIndividualOffsetEUtran>0</es:cellIndividualOffsetEUtran>
                                   <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
   			    </xn:VsDataContainer>
                        </xn:VsDataContainer>
			<xn:VsDataContainer_id_1="CCL01736_9A_1">
                            <xn:attributes>
                                <xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>
                                <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                <es:vsDataEUtranCellFDD/>
                            </xn:attributes>
                            <xn:VsDataContainer_id_2="5780">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranFreqRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranFreqRelation/>
                                </xn:attributes>
                                <xn:VsDataContainer_id_3="CCL01736_7A_1">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <OfLastModification>
                                    <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
                            </xn:VsDataContainer>
                        </xn:VsDataContainer>
                        <xn:VsDataContainer_id_1="CCL01736_9C_1">
                            <xn:attributes>
                                <xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>
                                <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                <es:vsDataEUtranCellFDD/>
                            </xn:attributes>
                            <xn:VsDataContainer_id_2="5780">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranFreqRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranFreqRelation/>
                                </xn:attributes>
                                <xn:VsDataContainer_id_3="CCL01736_7C_1">
                                    <xn:attributes>
                                    <xn:vsDataType>vsDataEUtranCellRelation</xn:vsDataType>
                                    <xn:vsDataFormatVersion>EricssonSpecificAttributes.13.25</xn:vsDataFormatVersion>
                                    <es:vsDataEUtranCellRelation>
                                    <es:cellIndividualOffsetEUtran>0</es:cellIndividualOffsetEUtran>
                                    <es:loadBalancing>0</es:loadBalancing>
                                    </es:vsDataEUtranCellRelation>
                                    </xn:attributes>
                                </xn:VsDataContainer>
                            </xn:VsDataContainer>
                        </xn:VsDataContainer>
                    </xn:VsDataContainer>
                </xn:ManagedElement>
            </xn:MeContext>
         </xn:SubNetwork>
    </configData>
    <fileFooter dateTime="2014-03-19T14:36:50Z"/>
</bulkCmConfigDataFile>

one way of doing it:

tac file.xml | awk '
 /vsDataEUtranCellFDD/ {id=1}
 /vsDataEUtranFreqRelation/ {id=2}
 /vsDataEUtranCellRelation/ {id=3}
 /VsDataContainer id/ {sub(/ id=/,"_id_"id"=")}1' | tac
1 Like

Getting Error

./gs.sh[232]: tac: not found
./gs.sh[232]: tac: not found

Replace tac with tail -r or sed '1!G;h;$!d' , see if that works

1 Like

Now i have used below command to get value but its not Parfect>

nawk ' /vsDataEUtranCellFDD/ {id=1} /vsDataEUtranFreqRelation/ {id=2} /vsDataEUtranCellRelation/ {id=3} /VsDataContainer id/ {sub(/ id=/,"_id_"id"=")}1' $CS_XML > $CS_XML_1

Its adding id base on previous line.

---------- Post updated at 11:57 AM ---------- Previous update was at 11:52 AM ----------

Still No Luck !!!!

---------- Post updated at 12:15 PM ---------- Previous update was at 11:57 AM ----------

Thanks Guys Its Working !!!!!! Both of you guys Great solution