Insert a new line between the XML tags?.

<TestLog>
<TriggerAPI>
<StartDate>Nov 16, 2012 6:34:02 AM com.satttest01.Response() </StartDate>
<RequestType>SUCCESS: Send :</RequestType>
        <TranNumber>5210203</TranNumber>
        <TranId>8585319731207148</TranId>
</TriggerAPI>
<TriggerAPI>
<StartDate>Nov 16, 2012 6:34:02 AM com.satttest01.Response() </StartDate>
<RequestType>FAILED: Receive :</RequestType>
        <TranNumber>5210203</TranNumber>
        <TranId>8585319731207148</TranId>
</TriggerAPI>
</TestLog>

Expected output

<TestLog>
<TriggerAPI>
<StartDate>Nov 16, 2012 6:34:02 AM</StartDate>
<RequestType>Send :</RequestType>
        <Status>SUCCESS</Status>
        <TranNumber>5210203</TranNumber>
        <TranId>8585319731207148</TranId>
</TriggerAPI>
<TriggerAPI>
<StartDate>Nov 16, 2012 6:34:02 AM</StartDate>
<RequestType>Receive :</RequestType>
        <Status>FAILED</Status>
        <TranNumber>5210203</TranNumber>
        <TranId>8585319731207148</TranId>
</TriggerAPI>
</TestLog>

Split a element into another element within xml.
can anyone suggest me?.

awk -F'[<|>]' ' {
 if($0 ~ /RequestType/)
 {
  split($3,arr," ");
  gsub(/(SUCCESS: |FAILED: )/,"",$0);
  print;
  printf "%s\n","<Status>"arr[1]"</Status>";
 }
 else print;
} ' xml_file
1 Like

Thank you it is working now. Could you please explain that what this code is doing?.

awk -F'[<|>]' ' {                              # Specifying field separator.
 if($0 ~ /RequestType/)                        # Checking if line has string RequestType
 {
  split($3,arr," ");                           # Split tag values and get them into array considering space as field separator.
  gsub(/(SUCCESS: |FAILED: )/,"",$0);          # Replacing string SUCCESS: or FAILED: from line.
  print;                                       # print whole line.
  printf "%s\n","<Status>"arr[1]"</Status>";   # print next line using 1st array element as tag value.
 }
 else print;                                   # print whole line.
} ' xml_file