Я работаю с очень большим размером кода и мне нужно переименовать множество API. Это включает в себя префиксы для всех API. Мои имена API выглядят примерно так:
MyfoobarFilename_FooFighterDoMeAFavor(MyfoobarFilename_FooFighter *FighterInstance, void *Favor)
MyfoobarFilename_FooFighterGetInLine(MyfoobarFilename_FooFighter *FighterInstance, void *Line)
MyfoobarFilename_FooFighterSetATicketForMe(MyfoobarFilename_FooFighter *FighterInstance, void *Ticket)
MyfoobarFilename_FooFighterHelpMeNowInterrupt(MyfoobarFilename_FooFighter *FighterInstance, void *FighterReference)
MyfoobarFilename_FooFighterAreYouOk(MyfoobarFilename_FooFighter *FighterInstance, unsigned int HowAreYou)
Я хочу изменить все эти имена, добавив подчеркивание к именам API.
Я хотел бы, чтобы результат был примерно таким, как показано ниже,
MyfoobarFilename_FooFighter_DoMeAFavor(MyfoobarFilename_FooFighter *FighterInstance, void *Favor)
MyfoobarFilename_FooFighter_GetInLine(MyfoobarFilename_FooFighter *FighterInstance, void *Line)
MyfoobarFilename_FooFighter_SetATicketForMe(MyfoobarFilename_FooFighter *FighterInstance, void *Ticket)
MyfoobarFilename_FooFighter_HelpMeNowInterrupt(MyfoobarFilename_FooFighter *FighterInstance, void *FighterReference)
MyfoobarFilename_FooFighter_AreYouOk(MyfoobarFilename_FooFighter *FighterInstance, unsigned int HowAreYou)
Однако я хочу заменить текст только в именах API, а не в других местах кода. Я мог бы использовать s/FooFighter/FooFighter_/g
, но это также внесет изменения, которые я не хочу.
Я мог бы сделать это многими способами, используя скрипт, выполняя grep и заменяя.
Однако должен быть более быстрый и умный способ сделать это, используя одну команду (надеюсь, с помощью sed). Может кто-нибудь просветить меня, как это сделать.
Заранее спасибо.