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"