【发布时间】:2014-11-18 14:26:39
【问题描述】:
我正在编写一个 bash 脚本,旨在影响文件夹中的所有文件,以便通过更改参数替换对给定 C 函数的所有调用。 这是当前调用的样子,以及我想要获得的内容:
myfunc( foo ) ----> myfunc( foo, foo+1 )
我使用以下 find/sed 命令,它完成了这项工作:
find . -name "*" -print | xargs sed -i 's/myfunc\([^)]*)\)/myfunc((\1),(\1)+1)/g'
但是当我必须处理包含括号的指令/参数时,问题就出现了,如下面的指令:
sqrt( myfunc( (foo+foo)*bar ) );
发生的情况是第一个右括号(即foo 之后的那个)被解释为myfunc 参数的结尾,它不是...
如何获取捕获和替换(foo+foo)*bar 的正则表达式(或任何其他命令),即无论括号级别的数量如何,都可以准确地获取正确级别括号的内容?
【问题讨论】:
标签: regex bash replace sed parentheses