コードを編集するために「sed」を使用すると発生する問題

コードを編集するために「sed」を使用すると発生する問題
for(int i=0; i<oldmethod(a, 7); i++) {
  sum += oldmethod(b*b+i-3, i%a);

---->

 for(int i=0; i<newmethod(7, 0, a); i++) {
  sum += newmethod(i%a, 0, b*b+i-3);

私は持っています

sed 's/old(\([-a-zA-Z 0-9./*+]*\),\([-a-zA-Z 0-9./*+]*\))/new(\2, 0, \1)/'

ただし、次の最初の古い方法のみが変更されます。

 for(int i=0; i<newmethod(7, 0, a); i++) {
   sum += oldmethod(b*b+i-3, i%a);

ベストアンサー1

2行目のパラメータの1つはですi%a%文字クラスに含まれていないため、正規表現と一致しません[-a-zA-Z 0-9./*+]。努力する

sed 's/oldmethod(\([-a-zA-Z 0-9./*+%]*\),\([-a-zA-Z 0-9./*+%]*\))/newmethod(\2, 0, \1)/'

_変数名や他の関数(へのネストされた呼び出しなど、考慮していない他の文字を使用することが多い場合があります。)このような使用が発生した場合は、サブ式を拡張し続ける必要があります。

おすすめ記事