これが可能かどうか知りたいです。さまざまなファイルのテキストを一括交換したいのですが、これは問題ではありません。理解できない場合や可能な場合でも、特定の方法でテキストを置き換えます。
例えば:
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
部分を再び置換部分に入れます。