如何用sed替换一组分隔符字符串之间的字符串?第一个分隔符是一个不被替换的字符串;第二个分隔符是一个char,但需要替换为替换的一部分。
即
FIRST_DELEM="GetVal("
SECOND_DELEM=”,”
Example string:
abc = param.GetVal((m_AstringToReplace, xml_SomeData, StringParameter(L""));
要替换或删除的字符串=(m_AstringToReplace,
以下sed命令只解析字符串,不会替换它。
sed -e 's/.*GetVal(\(.*\),.*/\1/'
如何使用sed替换使用这些复杂分隔符的字符串?
答案 0 :(得分:0)
以此为输入:
$ 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""));
正则表达式(GetVal[(])
会将第一个分隔符捕获到第1组。[^,]*,
匹配所有后续并包含第一个逗号,
的内容。
请注意,如果我们使用.*,
代替[^,]*,
,那么我们会在字符串中将所有内容与 last 逗号进行匹配。
在替换的替换部分,\1
恢复第一个分隔符,即我们想要保留的分隔符。以下所有内容都是替换,无论你想要什么。