2016-07-12 53 views
-2

替換逗號分隔字符串,我要取代這個我可以用特定的模式

192.168.1.100,192.168.1.101,192.168.1.102 

server 192.168.1.100;server 192.168.1.101;server 192.168.1.102; 

在Linux中sed命令。

+2

至少投入一些精力英寸 – 123

回答

2

這可以通過兩個替換來完成,首先在所有出現的字符串或逗號開頭之後插入「服務器」部分(即「服務器」後面緊跟一個空格),然後第二個替換所有出現的逗號或用分號結尾。

sed -E 's/(^|,)/&server /g; s/(,|$)/;/g;' <<<'192.168.1.100,192.168.1.101,192.168.1.102'; 
## server 192.168.1.100;server 192.168.1.101;server 192.168.1.102; 
1

做它的三個步驟:

  1. 與semicolumns替換逗號
  2. 添加終端semicolumn
  3. 替換通過與server前綴相同的地址semicolumn終止每個IP地址。

sed 's/,/;/g ; s/$/;/ ; s/([0-9.]*;)\;/server \1/g'

1

下面是一個使用單一替代簡單sed解決方案:

sed 's/\([^,]*\),\?/server \1;/g' 
相關問題