sed替换并保留双引号

问题描述:

我只是想更改双引号内的服务器和IP信息。sed替换并保留双引号

例如: 原始行:

"server":"10.10.10.10:3306" 

OR

"server":"localhost:3306" 

输出线:

"server":"20.20.20.20:3306" 

我尝试使用...

sed -i s/.*/\"server\"\:\"20\.20\.20\.20\:3306\"/ 

输出:

​​

所有双quoest到哪里去了? 它会替换值但不保留双引号。我希望它不应该改变双引号。

任何帮助?

您需要在单引号内包含sed模式。如果你这样做,那么你不需要逃避双引号。

$ echo '"server":"10.10.10.10:3306"' | sed 's/.*/"server":"20.20.20.20:3306"/' 
"server":"20.20.20.20:3306" 

OR

你可以简单地做这样的,

$ echo '"server":"10.10.10.10:3306"' | sed 's/[^":]\+:/20.20.20.20:/' 
"server":"20.20.20.20:3306" 
$ echo '"server":"localhost:3306"' | sed 's/[^":]\+:/20.20.20.20:/' 
"server":"20.20.20.20:3306"