bash ワイルドカード sed/regnex を使用して文字列内のテキストを置換する

bash ワイルドカード sed/regnex を使用して文字列内のテキストを置換する

これが可能かどうか疑問に思っています。さまざまなファイル内のテキストを一括置換したいのですが、これは問題ではありません。私が理解できないのは、あるいは可能だとしても、特定の方法でテキストを置換することです。

例えば:

String = XXXXX_name($var1); 

XXXX は固定なので、たとえば XXXX を YYYY に置き換えると簡単です。ただし、より複雑な部分は次のとおりです。

($var1);

別の変数を挿入したいので、一致は");"<-- この前に挿入されますが、文字列にすでに 2 つの変数がある場合は($var1,$var2);何も挿入されません。

if $ > 1ここでもう1つ追加すると、Var1とVar2はさまざまな名前で呼ばれる可能性があるため、一致は内部にある必要があり()、何もせず、前に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キャプチャされた部分を置換部分に戻します。

関連情報