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

Bash 我可以用特定的模式替换逗号分隔的字符串吗,bash,sed,Bash,Sed,我想换这个 192.168.1.100,192.168.1.101,192.168.1.102 到 在linux中使用sed命令。这可以通过两种替换来完成,第一种是在所有字符串开头或逗号出现之后插入“服务器”部分(即“服务器”后跟空格),第二种是用分号替换所有逗号或字符串结尾 sed -E 's/(^|,)/&server /g; s/(,|$)/;/g;' <<<'192.168.1.100,192.168.1.101,192.168.1.102'; ## ser

我想换这个

192.168.1.100,192.168.1.101,192.168.1.102 


在linux中使用sed命令。

这可以通过两种替换来完成,第一种是在所有字符串开头或逗号出现之后插入“服务器”部分(即“服务器”后跟空格),第二种是用分号替换所有逗号或字符串结尾

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;
sed-E/(^ |,)/&server/g;s/(,|$)//g、 " 分三步进行:

  • 将逗号替换为半列
  • 添加终端半列
  • 将以半列结尾的每个IP地址替换为具有
    服务器前缀的相同地址
  • sed/,//Gs/$/;/;s/([0-9.]*;)\/服务器\1/g'
    

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

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

    至少要付出一些努力。
    sed 's/\([^,]*\),\?/server \1;/g'