sed を使用したコードのリファクタリング

sed を使用したコードのリファクタリング

ファイルの文字列を再配置/再構成するためのsedスクリプトを作成するにはどうすればよいですか?

私のファイルの内容は次のとおりです。

    for(int i=0; i<old(a, 10); i++)
    {
      sum += old(c*c, i*a)
    }

変更されたコンテンツを次のように作成したいと思います。

    for(int i=0; i<new(10,0,a); i++)
    {
      sum += new(i*a, c*c)
    }

答え1

以下はGNUに適用されます。単語境界表示をsed使用して、単語の一部として含まれているのではなく、「単語」自体の場合にのみ変更するようにします。\<\>oldnewcold

$ sed -e 's/\<old\>/new/g' foo.c 
    for(int i=0; i<new(a, 10); i++)
    {
      sum += new(c*c, i*a)
    }

-i標準出力に印刷する代わりにファイルを変更するには、GNU sedのオプションを使用します。

警告する:このsedスクリプトは変更されます。みんな/\<old\>/ソースファイルで発生します。これは変更しようとするよりもはるかに多い可能性があります。

答え2

GNU sed:

/bin/sed -ire \
 's!\<old\(([^)]+), *([^) ][^)]*)\)!new(\2, \1)!g' \
 *.c </dev/null

関連情報