2014-09-25 112 views
0

我只是想更改雙引號內的服務器和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到哪裏去了? 它會替換值但不保留雙引號。我希望它不應該改變雙引號。

任何幫助?

回答

1

您需要在單引號內包含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"