如何在XML文件中查找和增加日期字符串?

时间:2013-11-11 21:25:51

标签: perl sed xmla

我有一个XML文件(实际上是XMLA),它将用于在滚动的基础上动态删除和创建MS Analysis Services中的分区。我的要求是我必须在unix中编辑文件,因为文件将被使用并发送到AS服务器(即我不能使用SSIS)。 XMLA非常可预测。我基本上有以下内容:该文件将包含一个删除部分,其中包含一个PartitionID,后跟一个带有单个PartitionID的创建部分(我取出了噪音)。

<Batch>
  <Delete>
    <PartitionID>Cube_Part_201211</PartitionID>
  </Delete>
  <Create>
    <PartitionID>Cube_Part_201312</PartitionID>
  </Create>
</Batch>

脚本应将第一个值增加为* _201212(即加一个月),将第二个值增加为* _201401(再加上一个月)。另一种方法是让它更容易(我希望)是要改变的值可以相对于今天的日期而不是增加现有值。

1 个答案:

答案 0 :(得分:2)

一种快速但又丑陋的方法......

perl -pe 's/(?<=<PartitionID>)(.*?)(\d{4})(?:(0[1-9]|1[01])|(12))(?=<\/PartitionID>)/sprintf("%s%04d%02d",$1,$2+($4?1:0),$4?1:($3+1))/eg' < input.xml > output.xml