bash substituindo texto em string por curinga sed/regnex

bash substituindo texto em string por curinga sed/regnex

Gostaria de saber se isso é possível, quero substituir em massa um texto em vários arquivos, isso não é problema. O que não consigo entender, ou mesmo se é possível, é substituir o texto de uma forma específica.

Por exemplo:

String = XXXXX_name($var1); 

XXXX é fixo, então XXXX substitua por YYYY, por exemplo, bastante simples. mas a parte mais complicada é:

($var1);

Quero inserir outra variável, então a correspondência seria ");"<-inserir antes disso, MAS se a string já tiver duas variáveis ($var1,$var2);​​para não inserir nada.

Agora, para adicionar outra coisa, Var1 e Var2 podem ser chamados de várias coisas, então a partida teria que estar if $ > 1dentro (), para não fazer nada e If $ = 1 inside ()depois para inserir ", $var2"antes);

String = XXXXX_name($var1);
Deve se tornar: String =YYYYY_name($var1, var2);

Responder1

Algo assim?

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

Em expressões regulares estendidas, os parênteses sem aspas capturam a parte dentro deles e o sed \1coloca a parte capturada de volta na peça de substituição.

informação relacionada