Нужно изменить порт только в блоке
/test/v2.0.0
:
server {
location /test/v2.0.3 {
modsecurity on;
proxy_pass http://10.1.0.6:3000;
}
location /test/v2.0.0 {
modsecurity on;
proxy_pass http://10.1.0.6:3000;
}
}
sed '0,/:[0-9].*;/{s/:[0-9].*;/:5555;/}' test.nginx
- меняет первое совпадение
sed '/.*location.*\/test\/v2.0.0\/.*:[0-9].*;/{s/:[0-9].*;/:5555;/}' test.nginx
- ничего не меняет
sed 's/.*location.*\/test\/v2.0.0\/.*:[0-9].*;/:5555;/' test.nginx
- ничего не меняет
P.S:
Как звучит задача:
Найти
location /test/v2.0.0
перед которым может быть любой символ кроме "#", выбрать всё из скобок
{
}
, найти между ними строку порта
:3000;
, заменить её на указанную.