
Tenho várias máquinas virtuais que implanto continuamente em um grande ambiente de teste automatizado. Cada VM, depois de implantada, grava seu nome de host em /etc/hosts
.
127.0.0.1 XXXX-testbot-XXX
Quando for implantado, quero substituir"xxxx-testbot-xxxx"com"aaaa-testbot-aaaa".
Na verdade, dependendo da implantação, o nome do host pode até serDDDD-SSSS-EEE-testbot-XYXXY"
Estou procurando algo como encontrar a palavra "testbot" e substituí-la por um novo valor
Eu tentei isso:
x="garn13-testbot-15"
sudo sed -i "s/\*\(testbot)*\).*/$x/g" /etc/hosts
Mas isso apenas substituiria a correspondência do próprio "testbot":
Before:
127.0.1.1 garn13-testbot-12
After:
127.0.1.1 garn13-garn13-testbot-15
Responder1
A resposta mais simples é procurar o(s) delimitador(es):
sed "s/[^ \t]*testbot[^ \t]*/$X/g"
Isso depende da ganância do algoritmo de correspondência e permite um branco à direita com espaço ou tabulação como delimitador.