bash замена текста в строке с помощью подстановочных знаков sed/ regnex

bash замена текста в строке с помощью подстановочных знаков sed/ regnex

Мне интересно, возможно ли это, я хочу массово заменить текст в разных файлах, это не проблема. Чего я не могу понять, или даже возможно ли это, так это заменить текст определенным образом.

Например:

String = XXXXX_name($var1); 

XXXX фиксировано, поэтому XXXX замените на YYYY, например, это достаточно просто. Но более сложная часть:

($var1);

Я хочу вставить еще одну переменную, поэтому совпадение будет ");"<-- вставить перед этим, НО если строка уже содержит две переменные, ($var1,$var2);то ничего вставлять не нужно.

Теперь, чтобы добавить что-то еще, Var1 и Var2 могут называться по-разному, поэтому совпадение должно быть if $ > 1внутри (), затем ничего не делать, If $ = 1 inside ()затем вставлять ", $var2"перед);

Строка = XXXXX_name($var1);
Должно стать: Строка =YYYYY_name($var1, var2);

решение1

Что-то вроде этого?

$ echo 'String = XXXXX_name($var1); ' | 
    sed -E -e 's/XXXXX_name\((\$[[:alnum:]_]+)\);/YYYYY_name\(\1, \$var2\);/'
String = YYYYY_name($var1, $var2); 

В расширенных регулярных выражениях скобки без кавычек захватывают часть внутри них, а sed \1помещает захваченную часть обратно в заменяющую часть.

Связанный контент