[英]sed how to replace the regex string
我有一個像
"solrHost" : "http://localhost:8983,http://localhost:8764",
在一個名為 sample.json 的文件中。 “solrHost”和:之間可能有空格,也可能沒有,並且:和“ http://localhost:8983,http://localhost:8764 ”之間可能有空格
我有另一個變量 newServerName="http://newserver,http://newserver2"
solrHost 的值可以是雙引號之間的任何值,
我想使用 sed 將 solrHost 的值從 old 替換為 newServerName 任何人都可以在這里幫助我嗎?
您最好使用理解 JSON 的工具,而不是試圖將某些東西與sed
和正則表達式混在一起。 jq
是 JSON 命令行操作的首選:
$ 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%%%
)命令的部分。[[:space:]]*
覆蓋空間類中的零個或多個字符。 如果您不關心替代方案(選項卡等),請僅替換為一個空白星,這對於格式良好的 JSON 可能是合理的。"solrHost"
部分。"'"$newServerName"'"
使用下面的 sed 命令替換文本。
%s/solrHost(old name)/newServerName/g
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.