Вы можете написать регулярное выражение для поиска, соответствующего вашим требованиям:
find. -regextype egrep -regex './foo[^/]*bar/quux[A-Z](\.bak)?/pic[0-9][0-9][0-9][0-9][^/]?\.jpg'
Один из аргументов во второй строке — i%a
. Это не будет соответствовать вашему регулярному выражению, потому что вы не включили %
в свой класс символов [-a-zA-Z 0-9./*+]
. Попробуйте
sed 's/oldmethod(\([-a-zA-Z 0-9./*+%]*\),\([-a-zA-Z 0-9./*+%]*\))/newmethod(\2, 0, \1)/'
Вы можете найти дополнительные экземпляры, использующие другие символы, которые вы не рассматривали, такие как _
в именах переменных или (
и )
во вложенных вызовах других функций. Вам придется продолжать расширять подвыражение по мере того, как вы сталкиваетесь с таким использованием.
Более общая возможность:
sed -E 's/old([^,]*\()([^,])*, ([^)]*)\);/new\1\3, 0, \2);/' file
Выход:
for(int i=0; i<newmethod(7, 0, a); i++) {
sum += newmethod(i%a, 0, b*b+i-3);