У меня есть XML-файл конфигурации бина, который выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>MyDriver</value>
</property>
<property name="url">
<value>#####</value>
</property>
<property name="username">
<value>myUser</value>
</property>
<property name="password">
<value>myPassword</value>
</property>
</bean>
</beans>
Я хочу динамически заменить строку #####
на sed.
#####
может иметь разные значения, например myUrl1
, myUrl2
и т. Д. И должны быть заменены другими данными myUrlX
Таким образом, результат должен выглядеть примерно так:
...
<property name="url">
<value>myUrlX</value>
</property>
...
Пока что я только приблизился к решению с помощью следующей команды sed:
sed -n "1h;1!H;${;g;s|\(<property [^>]*>.*<value>\).*\(</value>.*</property>\)|\1myUrl\2|g;p;}" test.xml
Но это заменяет строку myPassword
в моем XML-файле вместо #####
.
Может ли кто-нибудь дать мне подсказку, что мне нужно изменить в моей команде sed?
Большое спасибо!