I have test.xml
<emp><id>101</id><name>AAA</name><date>06/06/14 1811</date></emp>
<Join><id>101</id><city>london</city><date>06/06/14 2011</date></join>
<Join><id>101</id><city>new york</city><date>06/06/14 1811</date></join>
<Join><id>101</id><city>sydney</city><date>06/06/14 0623</date></join>
<emp><id>102</id><name>BBB</name><date>09/09/14 2001</date></emp>
<Join><id>102</id><city>new york</city><date>09/09/14 1410</date></join>
<Join><id>102</id><city>perth</city><date>09/08/14 2001</date></join>
<Join><id>102</id><city>tulsa</city><date>09/09/14 1919</date></join>
timestamp format : MM/DD/YY HHMM
for example,
Extract 'emp' timestamp for first row (06/06/14 1811) and checks 'join' timestamp rows. if not less equal to another timestamp then replace from 'emp' timestamp into 'join' row
My output.xml should be as,
<emp><id>101</id><name>AAA</name><date>06/06/14 1811</date></emp>
<Join><id>101</id><city>london</city><date>06/06/14 2011</date></join>
<Join><id>101</id><city>new york</city><date>06/06/14 1811</date></join>
<Join><id>101</id><city>sydney</city><date>06/06/14 1811</date></join>
<emp><id>102</id><name>BBB</name><date>09/09/14 2001</date></emp>
<Join><id>102</id><city>new york</city><date>09/09/14 2001</date></join>
<Join><id>102</id><city>perth</city><date>09/09/14 2001</date></join>
<Join><id>102</id><city>tulsa</city><date>09/09/14 2001</date></join>
this is example I have huge xml file
this is my code
for i in `cat test.xml`
do
if [[ "$i" == "<emp>"* ]] ; then
empvar=`echo $i | grep -o -P '(?<=<date>).*(?=</date>)' `
empdate=`date --date="$empvar" +%s`
echo $i >> ouput.xml
else
joinvar=`echo $i | grep -o -P '(?<=<date>).*(?=</date>)'`
joindate=`date --date="$joinvar" +%s`
if [[ $empdate -le $joindate ]]; then
echo $i >> output.xml
else
echo $i | sed 's#<date>\([^<][^<]*\)</date>#<date>'$empvar'</date>#' >> output.xml
fi
fi
done
this code is working and it is taking long time to complete so, I need better way to process