2013-09-15 2 views
0

Предположим, что у нас есть содержимое XML-файл:Заменить слово тег для всего содержимого файла

<field name="id" id="1" type="number" default="" /> 

Предположим, что мы имеем файл шаблона с тегом:

INCLUDE_XML 

Нам нужно заменить INCLUDE_XML тег весь контент из xml-файла. Мы можем попробовать.

tpl_content=$(<tpl.xml) 
xml_content=$(<cnt.xml) 
xml_content="$(echo "$tpl_content" | sed "s/INCLUDE_XML/"$xml_content"/g")" 
echo "$xml_content" > out.xml 

Проблема заключается в том unterminated 's' command причина XML-файл имеет много благословить символы (цитаты, слеш и т.д.). Как мы можем сделать замену без этой заботы о символах в xml-файле контента?

ответ

1

Просто используйте встроенные средства sed.

sed -e '/INCLUDE_XML/!b' -e 'r cnt.xml' -ed tpl.xml >out.xml 

Перевод: если текущая строка ввода не соответствует регулярному выражению, просто продолжайте. В противном случае прочитайте и распечатайте другой файл и удалите текущую строку.

+0

Фантастический! Спасибо. Особенно для перевода магии. –

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