Отказ от ответственности: Как уже упоминалось в комментариях, это опасный хак . Это может привести к непреднамеренным побочным эффектам, если вы не уверены из ограничений на ввод. Если замена 9090
на строке, содержащей Port
в пределах 8 строк строки, содержащей AdmServer
, является именно тем, что вы хотите сделать, то может сработать что-то подобное:
sed "/AdmServer/,+8 {/Port/s/9090/$AdmServerPort/}" PoolServer.xml
Используйте -i
флаг, если вы хотите изменить файл на месте.
Пример ввода:
<AdmServer>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Port" Value="9090"/>
</AdmServer>
Пример вывода:
<AdmServer>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9595"/>
<Argument Name="Port" Value="9595"/>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9595"/>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9595"/>
<Argument Name="Port" Value="9595"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Foo" Value="9090"/>
<Argument Name="Port" Value="9090"/>
<Argument Name="Port" Value="9090"/>
</AdmServer>