2016-10-16 2 views
0

У меня есть XML-файл сзаменить содержимое между XML-тегом

<RangeType>3</RangeType> 
<RangeAmount>1</RangeAmount> 
<FromDate>2016/8/12 00:00:00</FromDate> 
<ToDate>2016/8/12</ToDate> 
<SyncOnSelect>0</SyncOnSelect> 
<RunEvery>0</RunEvery> 

Я хочу, чтобы заменить FromDate содержания (возможно anydate) в 2016/09/21, я планирую сделать это каждый день, чтобы изменить его на сегодня

<RangeType>3</RangeType> 
<RangeAmount>1</RangeAmount> 
<FromDate>2016/09/21</FromDate> 
<ToDate>2016/8/12</ToDate> 
<SyncOnSelect>0</SyncOnSelect> 
<RunEvery>0</RunEvery> 

Я попытался

sed 's/<FromDate>*<\/FromDate>/<FromDate>2016\/09\/21<\/FromDate>/g' 

Как мне это сделать?

+0

заменить содержание в 2016/09/21 – lwhuang

+1

Это не HTML, это XML. Независимо от того, используйте синтаксический анализатор XML. – rockerest

+0

просто опечатка в команде, которую вы пытались: '*' должно быть '. *' – Sundeep

ответ

0

Используйте реальный XML-анализатор, такие как XMLStarlet:

newValue=$(date '+%Y/%m/%d 00:00:00') 
xmlstarlet ed -u '//FromDate' -v "$newValue" \ 
    <in.xml >out.xml 
+0

Спасибо, это круто – lwhuang

Смежные вопросы