Предполагая, что у вас есть файл типа
<root>
<bean:write name='iframesrcUrl'/>
<bean:write name="iframesrcUrl"/>
<bean:write name="currentPage" property="title" filter="false"/>
<foo><bar/></foo>
</root>
Вы можете сделать замены с помощью этой команды sed
(используя GNU sed):
sed "s/<bean:write name=[\'\"]\?iframesrcUrl[\'\"]\?\/>/\${ iframesrcUrl }/g; \
s/<bean:write name=[\'\"]\?currentPage[\'\"]\?.*\/>/\${ currentPage.title }/g;" \
input.xml
, который производит:
<root>
${ iframesrcUrl }
${ iframesrcUrl }
${ currentPage.title }
<foo><bar/></foo>
</root>
Это то, что вам нужно? Или вы хотите заменить значения атрибутов? Или вы хотите поместить текст замещения в эти теги?
Чтобы найти и отредактировать все файлы на месте (внимание! Изменяет ваши файлы, пожалуйста, перед использованием проверьте без -i
, поместите маску файла вместо '* .jsp'):
find . -type f -name '*.jsp' -print0 | xargs -0 sed -i "..."
UPDATE
Чтобы заменить значения атрибутов, а не сами строки файла, я настоятельно рекомендую использовать xmlstarlet
вместо sed
/ awk
. Это гораздо надежнее и гибче. Я не могу опубликовать решение точно для вашего случая, потому что xmlstarlet
нужен полный (действительный) файл для обработки, но это идея:
Данный файл:
<a>
<b>
<c name="foo"/>
<c name="bar"/>
</b>
</a>
Допустим, мы хотим заменить foo
на SPAM
и bar
на EGGS
. Затем эта команда сделает это (разделенные строки для удобства чтения):
$ printf '<a><b><c name="foo"/><c name="bar"/></b></a>' | \
xmlstarlet ed --update "//c[@name='foo']/@name" -v SPAM \
--update "//c[@name='bar']/@name" -v EGGS
<?xml version="1.0"?>
<a>
<b>
<c name="SPAM"/>
<c name="EGGS"/>
</b>
</a>
Я использовал синтаксис XPath для выбора элемента для замены (в первом случае это атрибут name
, который принадлежит любому тегу c
и равен foo
). Подкоманда ed
из xmlstarlet
допускает различные преобразования, заменяя (обновляя) элемент только из них.
В реальных примерах вам нужно будет указать также bean
рабочее пространство, то есть добавить что-то вроде
-N bean=urn:...
к списку опций xmlstarlet
. Вы можете найти правильный URI в первых строках вашего файла .jsp (мне не на что смотреть).