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 $ > 1
dentro ()
, 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 \1
coloca a parte capturada de volta na peça de substituição.