Parsing 如何用sed替换一组分隔符字符串(包括第二个分隔符)之间的字符串?

Parsing 如何用sed替换一组分隔符字符串(包括第二个分隔符)之间的字符串?,parsing,sed,Parsing,Sed,如何用sed替换一组分隔符字符串之间的字符串?第一个分隔符是一个字符串,在使用时不会被替换;第二个分隔符是单个字符,但需要作为替换的一部分进行替换 i、 e 要替换或删除的字符串=(m_AstringToReplace 下面的sed命令将只解析出字符串,而不会替换它 sed -e 's/.*GetVal(\(.*\),.*/\1/' 如何使用sed替换使用这些复杂分隔符的字符串?将其作为输入: $ cat file abc = param.GetVal((m_AstringToReplace,

如何用sed替换一组分隔符字符串之间的字符串?第一个分隔符是一个字符串,在使用时不会被替换;第二个分隔符是单个字符,但需要作为替换的一部分进行替换

i、 e

要替换或删除的字符串=(m_AstringToReplace

下面的sed命令将只解析出字符串,而不会替换它

sed -e 's/.*GetVal(\(.*\),.*/\1/'
如何使用sed替换使用这些复杂分隔符的字符串?

将其作为输入:

$ cat file
abc = param.GetVal((m_AstringToReplace, xml_SomeData, StringParameter(L""));
这将替换紧跟在
GetVal(
之后并以第一个逗号结尾的字符串:

$ sed -re 's/(GetVal[(])[^,]*,/\1REPLACEMENT/' file
abc = param.GetVal(REPLACEMENT xml_SomeData, StringParameter(L""));
regex
(GetVal[(])
将第一个分隔符捕获到组1中。
[^,]*,
匹配第一个逗号之后的所有分隔符,

请注意,如果我们使用
*,
代替
[^,]*,
,那么我们会将所有内容匹配到字符串中的最后一个逗号

在替换的替换部分,
\1
还原第一个分隔符,即我们希望保留的分隔符。下面的所有操作都是替换,无论您希望它是什么。

将此作为输入:

$ cat file
abc = param.GetVal((m_AstringToReplace, xml_SomeData, StringParameter(L""));
这将替换紧跟在
GetVal(
之后并以第一个逗号结尾的字符串:

$ sed -re 's/(GetVal[(])[^,]*,/\1REPLACEMENT/' file
abc = param.GetVal(REPLACEMENT xml_SomeData, StringParameter(L""));
regex
(GetVal[(])
将第一个分隔符捕获到组1中。
[^,]*,
匹配第一个逗号之后的所有分隔符,

请注意,如果我们使用
*,
代替
[^,]*,
,那么我们会将所有内容匹配到字符串中的最后一个逗号


在替换的替换部分,
\1
还原第一个分隔符,即我们希望保留的分隔符。接下来的所有操作就是替换,无论您希望它是什么。

谢谢,这就是我需要的!谢谢,这就是我需要的!