I have configuration file
<configuration>
<property>
<name>name1</name>
<value>value1</value>
<description>desc1</description>
</property>
<property>
<name>name2</name>
<value>valueToRemove</value>
<description>desc2</description>
</property>
<property>
<name>name3</name>
<value>value3</value>
<description>desc3</description>
</property>
<property>
<name>name3</name>
<value>valueToRemove</value>
<description>desc4</description>
</property>
<property>
<name>name5</name>
<value>valu5</value>
</property>
</configuration>
I want to remove all property tags that contains value valueToRemove.
I want next output
<configuration>
<property>
<name>name1</name>
<value>value1</value>
<description>desc1</description>
</property>
<property>
<name>name3</name>
<value>value3</value>
<description>desc3</description>
</property>
<property>
<name>name5</name>
<value>valu5</value>
</property>
</configuration>
Next bash script removes only lines with value tags.
sed -i "/[<property>].*valueToRemove.*[<\/property]>/d" "test"
Help me, please, I am very new to bash and regex.