
我有一堆虛擬機,我在大型自動化測試環境中一遍又一遍地部署它們。每個虛擬機器在部署後都會將其主機名稱寫入/etc/hosts
.
127.0.0.1 XXXX-testbot-XXX
當它部署後,我想更換“xxxx-testbot-xxxx”和“yyyy-testbot-yyyy”。
事實上,根據部署的不同,主機名稱甚至可以是DDDD-SSSS-EEE-testbot-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"
這依賴於匹配演算法的貪婪性,並允許尾隨白色以空格或製表符作為分隔符號。