使用SED编辑单个xml元素并将其拆分为两个?
我目前得到了以下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
<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)。