我有一个像"solrHost" : "http://localhost:8983,http://localhost:8764",
位于一个名为sampple.json的文件中。在“ solrHost”和:之间可能有空格,或者在:和“ http://localhost:8983,http://localhost:8764”
我还有另一个变量newServerName =“ http:// newserver,http:// newserver2”
solrHost的值可以是双引号之间的任何值,
我想使用sed将solrHost的值从old替换为newServerName,有人可以在这里帮助我吗?
[使用了解JSON的工具,而不是尝试与sed
和正则表达式结合在一起的工具,您会变得更好得多。 jq
是JSON的命令行操作的基础:
jq
$ cat foo.json
{
"solrHost" : "http://localhost:8983,http://localhost:8764",
"foo": 12
}
$ jq --arg url "http://newserver,http://newserver2" '.solrHost = $url' foo.json
{
"solrHost": "http://newserver,http://newserver2",
"foo": 12
}
sed 's%\("solrHost"[[:space:]]*:[[:space:]]*\)"[^"]*"%\1"'"$newServerName"'"%'
代替%
来标记/
(或s///
)命令的各个部分。s%%%
覆盖空格类别中的零个或多个字符。如果您不关心替代项(制表符等),则只用空白星号代替,这可以用格式正确的JSON来证明。[[:space:]]*
部分。"solrHost"
使用下面的sed命令替换文本。
"'"$newServerName"'"