使用SED编辑单个xml元素并将其拆分为两个?

使用SED编辑单个xml元素并将其拆分为两个?,xml,sed,Xml,Sed,我目前得到了以下xml,但在处理单个元素中包含的日期和时间时遇到了问题 <data> <StartDateTime>2019-10-19T12:00:00Z</StartDateTime> </data> 2019-10-19T12:00:00Z 但希望输出为: <data> <date>2019-10-19</date> <time>12:00:00Z</time&g

我目前得到了以下xml,但在处理单个元素中包含的日期和时间时遇到了问题

<data>
    <StartDateTime>2019-10-19T12:00:00Z</StartDateTime>
</data>

2019-10-19T12:00:00Z
但希望输出为:

<data>
   <date>2019-10-19</date>
   <time>12:00:00Z</time>
</data>

2019-10-19
12:00:00Z

有可能用sed来改变这一点吗?

@Cyrus说得对

但是,如果您确信输入始终是这样的,并且由于输入没有那么复杂,那么实际上,您可以使用sed:

sed -E 's|<StartDateTime>([0-9]{4}-[0-9]{2}-[0-9]{2})T([0-9]{2}:[0-9]{2}:[0-9]{2}[A-Z])</StartDateTime>|<date>\1</date>\n    <time>\2</time>|g'
sed-E的|([0-9]{4}-[0-9]{2}-[0-9]{2})T([0-9]{2}:[0-9]{2}[A-Z])|\1\n\2{g'
此表达式使用捕获组,您可以在稍后的替换中使用
'\'
后跟组的索引,在本例中为
\1
\2

我建议使用XML/HTML解析器(例如xmlstarlet)。