我可以用特定模式替换逗号分隔的字符串

时间:2016-07-12 14:56:51

标签: bash sed

我想替换这个

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命令。

3 个答案:

答案 0 :(得分:2)

这可以通过两次替换完成,首先插入"服务器"在所有出现的字符串或逗号开头之后,紧接着(即" s"服务器"后跟空格),第二次用分号替换所有出现的逗号或字符串结尾

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)

分三步完成:

  1. 用逗号替换逗号
  2. 添加终端分号
  3. 将以半分号终止的每个IP地址替换为server前缀的相同地址。
  4. sed 's/,/;/g ; s/$/;/ ; s/([0-9.]*;)\;/server \1/g'

答案 2 :(得分:1)

这是一个使用单一替换的简单sed解决方案:

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