sed -i '\%<name>grapes</name>%,\%</fruit>%s%<value>2000</value>%<value>5000</value>%' fruits.xml
Мы используем обобщенный \%
, чтобы избежать необходимости использовать обратную косую черту в закрывающих тегах. s%%%
не нуждается в обратном слэше, потому что sed
уже знает, что после s
есть разделитель.
На * BSDish-платформах, включая MacOS, вам нужен явный аргумент пустой строки для sed -i
перед самим сценарием (поэтому sed -i '' '\%...'
)
Это пытается быть строгим, но, конечно, не может справиться со всеми возможными вариациями, которые синтаксически разрешены в XML. Если ваш файл всегда в точно ожидаемом формате, это должно работать на данный момент. Одним из недостатков является то, что вы не получите предупреждения, когда он перестанет работать, потому что Дженкинс решает начать использовать пробелы внутри тегов или что-то еще.