Используя SED Редактирование одного элемента XML и разделение на два? - PullRequest
2 голосов
/ 17 октября 2019

В настоящее время у меня есть следующий xml, но возникают проблемы с обработкой даты и времени, содержащихся в одном элементе.

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

но хотите, чтобы он выводился как:

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

Возможно ли использовать sed, чтобы изменить это?

1 Ответ

1 голос
/ 17 октября 2019

@ Сайрус прав, когда говорит, что [X] HTML не может быть проанализирован с помощью регулярного выражения .

Но если вы уверены, что входные данные всегда будут выглядеть так, и посколькуввод не такой сложный, фактически вы можете сделать это с помощью 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'

В этом выражении используются группы захвата, которые вы можете позже ссылаться при замене на '\'за которым следует индекс группы, \1 и \2 в данном случае.

...