
대규모 자동화 테스트 환경에 반복해서 배포하는 여러 개의 가상 머신이 있습니다. 각 VM은 배포된 후 해당 호스트 이름을 /etc/hosts
.
127.0.0.1 XXXX-testbot-XXX
배포되면 교체하고 싶습니다."xxxx-테스트봇-xxxx"~와 함께"yyyy-테스트봇-yyyy".
실제로 배포에 따라 호스트 이름은 다음과 같을 수도 있습니다.DDDD-SSSS-EEE-테스트봇-XYXXY"
"testbot"으로 단어를 찾아 새로운 값으로 바꾸면서 무언가를 찾고 있습니다.
나는 이것을 시도했다:
x="garn13-testbot-15"
sudo sed -i "s/\*\(testbot)*\).*/$x/g" /etc/hosts
그러나 이는 "testbot" 자체의 일치 항목을 대체할 뿐입니다.
Before:
127.0.1.1 garn13-testbot-12
After:
127.0.1.1 garn13-garn13-testbot-15
답변1
가장 간단한 대답은 구분 기호를 찾는 것입니다.
sed "s/[^ \t]*testbot[^ \t]*/$X/g"
이는 일치 알고리즘의 탐욕에 의존하며 공백이나 탭을 구분 기호로 사용하여 후행 흰색을 허용합니다.