Como sugerido, existem maneiras melhores de editar arquivos INI ...
Ainda assim, aqui está uma maneira com sed
:
sed '/^\[.*\]/h
/http-proxy-exceptions/{x;/\[global\]/!{x;b;};x;c\
http-proxy-exceptions = *.otherdomain.org, *.otherdomain.com, 127.0.0.1, localhost
}
/http-proxy-host/{x;/\[global\]/!{x;b;};x;c\
http-proxy-host = proxy.otherdomain.com
}
/http-proxy-port/{x;/\[global\]/!{x;b;};x;c\
http-proxy-port = 9000
}' infile
Isso substitui o buffer de retenção pelo conteúdo do espaço de padrões sempre que encontrar uma linha correspondente a [.*]
(ou seja, salva cada nome de seção no buffer h
old). Em cada linha que corresponda aos seus padrões http-.*
, ele e x
alterará os buffers - se o espaço em espera não ( !
) corresponder a [global]
, então e x
será alterado novamente e ignorará para o próximo ciclo via b
. Se o espaço de espera corresponder a [global]
it e x
for alterado novamente, c
trará o conteúdo do espaço de padrão.