Código Refactor usando sed

¿Cómo escribo un script sed que reorganiza / refactoriza una cadena de caracteres de un file?

El contenido de mi file es:

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

Y quiero que los contenidos modificados se vean así:

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

Lo siguiente funciona con GNU sed : hace uso de los marcadores de límite de palabras \< y \> para asegurarse de que solo cambie de old a new cuando es una "palabra" por sí mismo y no solo embedded como parte de una palabra como cold .

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

Use la opción -i GNU sed si desea que cambie el file in situ en lugar de imprimir en stdout.

ADVERTENCIA : Este script sed cambiará TODAS las ocurrencias de /\<old\>/ en el file fuente. Esto puede ser mucho más de lo que quieres cambiar.

gnu sed:

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