Мне интересно, возможно ли это, я хочу массово заменить текст в разных файлах, это не проблема. Чего я не могу понять, или даже возможно ли это, так это заменить текст определенным образом.
Например:
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
помещает захваченную часть обратно в заменяющую часть.