см. У меня есть один файл jig.c, в котором есть выражение типа
mkvFree(jig);
Теперь я использовал следующую команду для поиска и замены
find /home/jeegar/jig.c -type f -exec sed -i 's/mkvFree(/mkvFree((void**)&/g' {} \;
По этой команде я хочучтобы получить вывод как
mkvFree((void**)&jig);
Но я получаю вывод как
mkvFree((void**)mkvFree(jig);
что не так с моей командой?
Редактировать:
Я принял эту команду от https://superuser.com/questions/324428/find-and-replace-command-for-whole-directory
Вам нужно экранировать символ \ &:
find /home/jeegar/jig.c -type f -exec \ sed -i 's/mkvFree(/mkvFree((void**)\&/g' {} \;
Символ & заменяет весь соответствующий ввод для шаблона.
&
& - метасимвол в выражении замены, означающий «всю строку поиска». Процитируйте это, и это должно работать.