【发布时间】:2020-09-14 08:01:39
【问题描述】:
我们在项目中使用了第三方专有软件。在两个主要版本之间,供应商决定限制对其中一种方法的访问,并提供具有不同签名的替代方法名称。示例如下图
Object obj;
Old way: Method_A(obj);
New way: obj.Method_B();
是否可以在 linux sed 中使用正则表达式进行查找/替换?
例如:
Method_A( abc ); ==> abc .Method_B();强>
Method_A( m ); ==> m .Method_B();强>
Method_A( xyz123 ); ==> xyz123 .Method_B();强>
这是我迄今为止尝试过的:
grep -R "Method_A(" . | sed -i 's/Method_A(^.{1,50}$/_____.Method_B(/g"
无论我尝试为 _____ 指定什么,我都无法达到预期的结果。
【问题讨论】:
-
如果
()中有空格,请尝试sed -E 's/Method_A\(([^)]+)\)/\1.Method_B()/' file和sed -E 's/Method_A\( *([^) ]+) *\)/\1.Method_B()/' file -
grep -R "Method_A(" . | sed 's/Method_A([[:space:]]\(.*\)[[:space:]])/\1.Method_B()/'