заменить значение тегов XML в скрипте оболочки - PullRequest
0 голосов
/ 08 ноября 2018

Привет, я такой xml-файл.

  <parameter name="END_DATE">20181031</parameter>

Я хочу заменить это значение тега другим значением, которое я пробовал вот так.

dt=$(awk -F '[<>]' '/_DATE/{print $3}' test.xml)

Я извлек значение тегов.

У меня есть другое значение переменной, подобное этому.

newdt=20181108

Теперь мне нужно заменить это значение на извлеченное значение.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Если у вас работает sed -

sed -Ei 's/( name="END_DATE")>20181031</\1>20181108</' test.xml

И парсер xml, вероятно, является лучшей идеей.

Если вам нужно встроить переменную -

sed -Ei "s/( name=\"END_DATE\")>20181031</\1>$newdt</" test.xml
0 голосов
/ 08 ноября 2018

Хотя Чепнер прав, что awk или sed не являются точными инструментами для xml, если в вашей системе НЕ установлено xmlstarlet, попробуйте выполнить следующее.

echo $newdt
20181108
awk -v dat="$newdt" 'match($0,/>[0-9]+</){$0=substr($0,1,RSTART) dat substr($0,RSTART+RLENGTH-1)} 1' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...