Basicamente, acho que essa questão é mais de regex do que de SED diretamente, mas é o SED que estou usando, então é de onde estou começando.
Eu tenho um arquivo de configuração web.config para um site do ASP.NET 2.0 para o qual estou automatizando o processo de criação. Estou usando o UNIXUtils para me dar um pouco mais de poder sobre o que é fornecido pelo Windows. Usando o SED, alguém pode me esclarecer sobre como eu realizaria o seguinte:
Alterar
Data Source=RANDOM-SERVER;Initial Catalog=SomeDatabase;Persist Security Info=True;User ID=MyUser;Password=*************;
Para
Data Source=PRODUCTION-SERVER;Initial Catalog=SomeDatabase;Persist Security Info=True;User ID=MyUser;Password=*************;
Eu tentei o seguinte
sed s"|Data Source=.*;|Data Source=PRODUCTION-SERVER;|g"
mas o que recebo é
Data Source=PRODUCTION-SERVER;
i.e. sed está sendo extremamente ganancioso e comendo todos os personagens até o último ponto e vírgula, pelo menos é o que parece estar fazendo.
BTW: Sim, eu gostaria de manter o operador guloso no final para garantir que a alteração seja aplicada a todas as ocorrências no arquivo original, embora, em teoria, não devesse existir.
Se alguém puder me mostrar como fazer isso, ficarei muito grato, embora suspeite que não haja uma maneira fácil de fazer isso, já que não consegui encontrar nada na rede que atenda aos meus requisitos. Irritantemente todo mundo está focado em caminhos de uma forma ou de outra.
Se não puder ser feito no SED, mas pode ser feito usando outra coisa na suíte UNIXUtils padrão, então essa é uma resposta aceitável, estou aberto a sugestões.