0

I have an xml file which contains below

<SummaryRecordMapping>
<eName>Licensed Original MC TPE EXCESSIVE AUTH</eName>
<jobs>
<job>

<SummaryRecordMapping>
<eName>Licensed Reversal MC TPE EXCESSIVE AUTH</eName>
<jobs>
<job>

I want output like below

<SummaryRecordMapping>
<eName>Licensed Original MC This is New Deep</eName>
<jobs>
<job>

<SummaryRecordMapping>
<eName>Licensed Reversal MC This is New Deep</eName>
<jobs>
<job>

<SummaryRecordMapping>
<eName>Licensed Original MC This is Mayurika</eName>
<jobs>
<job>

<SummaryRecordMapping>
<eName>Licensed Reversal MC This is Mayurika</eName>
<jobs>
<job>

CODE

#!/bin/bash
while read whole_line ;
do
name=`echo "$whole_line" | awk '{$1=""; print}'`
LO="<eName>Licensed Original MC ${name}</eName>"
awk -v diff="$LO" '{ if(NR==2) { print diff}
                              else {print $0} } ' southBalanceRecon.xml >>LO.xml

LR="<eName>Licensed Reversal MC ${name}</eName>"
awk -v diff="$LR" '{ if(NR==14) { print diff}
                              else {print $0} } ' LO.xml >> LR.xml
done < file.txt

FILE.txt

C71 This is New Deep
C72 This is Mayurika

When i am trying to run my code i am not getting the probable output which i mentioned above. Can anyone tell me what is wrong with my code?

Asensi
  • 159
  • 7

1 Answers1

0

The problem is that you call awk inside a loop. Let awk do the looping.

Look at What is "NR==FNR" in awk? for understanding the NR==FNR part.

awk 'NR==FNR { a[NR]=$0; next }
     {
        $1=""
        for (i=1; i<=length(a); i++)  {
           if (i==2)
              print "<eName>Licensed Original MC" $0 "</eName>";
           else if (i==7)
              print "<eName>Licensed Reversal MC" $0 "</eName>";
           else
              print a[i];
        }
     }' southBalanceRecon.xml file.txt
Walter A
  • 19,067
  • 2
  • 23
  • 43