Bash sed替换两个字符串之间的文本

Bash sed替换两个字符串之间的文本,bash,macos,sed,Bash,Macos,Sed,我是新来的sed,尽管在网上看到了各种各样的例子,但我还是无法让它工作。 基本上,我有一个文本文件,我想在其中使用sed替换两个已知字符串之间的未知字符串。我正在Mac上使用bash。这就是我目前所拥有的 BuildFinish.txt内容: { "text": "Build: Old Build was successful", } Bash代码: sed -i '' -e 's/("Build: ")\(.*\)(" w

我是新来的
sed
,尽管在网上看到了各种各样的例子,但我还是无法让它工作。 基本上,我有一个文本文件,我想在其中使用
sed
替换两个已知字符串之间的未知字符串。我正在Mac上使用bash。这就是我目前所拥有的

BuildFinish.txt内容:

{
"text": "Build: Old Build was successful",
}
Bash代码:

sed -i '' -e 's/("Build: ")\(.*\)(" was successful")/\1 "New Build" \2/g' BuildFinish.txt
谢谢, Chris.

使用
\(
\)
捕获组。使用
匹配文字括号。不知道你想用双引号做什么。尝试:

$ echo '"text": "Build: Old Build was successful"' |
        sed -e 's/\("Build: \).*\( was successful"\)/\1New Build\2/g'
"text": "Build: New Build was successful"

sed-e的/\(“构建:\)\(.*\)\(成功的“\)/\1“新构建”\3/g'
谢谢@williampersell,这非常有效!