我只想更改双引号内的服务器和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
所有双重喧嚣都消失了? 它取代了值但不保留双引号。我希望它不应该改变双引号。
任何帮助?
答案 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"