sed替换并保留双引号

时间:2014-09-25 01:23:50

标签: regex sed

我只想更改双引号内的服务器和IP信息。

例如: 原始行:

"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\"/

输出:

server:20.20.20.20:3306

所有双重喧嚣都消失了? 它取代了值但不保留双引号。我希望它不应该改变双引号。

任何帮助?

1 个答案:

答案 0 :(得分:1)

您需要将sed模式括在单引号中。如果您喜欢这样,那么您不需要转义双引号。

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

你可以这样做,

$ 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"