bashは文字列のテキストをワイルドカードsed / regnexに置き換えます。

bashは文字列のテキストをワイルドカードsed / regnexに置き換えます。

これが可能かどうか知りたいです。さまざまなファイルのテキストを一括交換したいのですが、これは問題ではありません。理解できない場合や可能な場合でも、特定の方法でテキストを置き換えます。

例えば:

String = XXXXX_name($var1); 

XXXXは固定されているので、XXXXを例えばYYYYに置き換えるのは簡単です。しかし、より複雑な部分は次のとおりです。

($var1);

他の変数を挿入したいので、");"挿入される前は<--一致項目になります。しかし、文字列にすでに2つの変数がある場合は、($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部分を再び置換部分に入れます。

関連情報