0
我的test.xmlUnix的:从第一条记录提取时间戳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>
时间戳格式:MM/DD/YY HHMM
例如,
为第一行(06/06/14 1811)提取'emp'时间戳并检查'连接'时间戳记行。如果不小于等于另一个时间戳然后从“EMP”时间戳更换成“加入”行
我的Output.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 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>
这是例子,我有巨大的xml文件
这是我的代码
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
这段代码工作,它是需要长时间来完成的话,我需要更好的方式来处理
的bash是不适合这个任务。你应该使用'python'等通用语言。 – 2014-11-05 19:23:55
在shell循环中执行这种算术是没有意义的。将脚本移植到Awk/Perl/Python应该会显着提升性能。我的建议是Awk提供简短而友好的学习方式,即Python用于投资回报,但如果您在受欢迎的环境中工作,Perl仍然是一个可行的选择。 – tripleee 2014-11-05 19:27:42
就我个人而言,我喜欢Perl,但是您面临的一个根本性问题是您的XML无效。尝试运行它:http://www.w3schools.com/xml/xml_validator.asp – Sobrique 2014-11-05 19:32:49