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



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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新