Shell I';我正在尝试使用sed命令反向引用

Shell I';我正在尝试使用sed命令反向引用,shell,Shell,我对shell脚本和sed比较陌生。我需要全局地替换一个模式,但我还需要记住(或保存)该模式的一部分,然后在同一个替换命令中使用它。保存的模式将是可变的,因此我需要使用通配符。比如说, input message=trt:GetAudioSourcesRequest/> 我想以这样的方式结束 input message=trt:GetAudioSourcesRequest PAUL/GetAudioSourcesRequest/> 但是函数字符串GetAudioSourcesRe

我对shell脚本和sed比较陌生。我需要全局地替换一个模式,但我还需要记住(或保存)该模式的一部分,然后在同一个替换命令中使用它。保存的模式将是可变的,因此我需要使用通配符。比如说,

input message=trt:GetAudioSourcesRequest/>
我想以这样的方式结束

input message=trt:GetAudioSourcesRequest PAUL/GetAudioSourcesRequest/>
但是函数字符串
GetAudioSourcesRequest
在整个文件中都会改变(长度也会改变),因此我需要一个通配符,例如

sed -i "s/input message=trt:<wild card in here>/>/input message=trt:<print wild card> PAUL/<print wild card>/>
这个输出

input message="trt:GetAudioSourcesRequest PAUL/GetAudioSourcesRequest"/>
这是可以的,但是当我使用
GetProfileRequest
时,这不起作用

我遇到过
\W
[^[:alnum:]
[:alnum:]
,但我不知道如何使用它们


提前谢谢。

它似乎不起作用。我的完整命令,echo“input message=\”trt:GetAudioSourcesRequest\“/>”sed的(input message=trt:)([^/]*)\1\2 PAUL/\2\124;输出输入消息=“trt:GetAudioSourcesRequest”/>我认为它没有执行sedOh,我发现了我的问题。我错过了一个双引号。谢谢
sed 's|\(input message=trt:\)\([^/]*\)|\1\2 PAUL/\2|'
sed 's|\(input message=trt:\)\([^/]*\)|\1\2 PAUL/\2|'