найти и заменить команду для всей проблемы директорай - PullRequest
3 голосов
/ 07 октября 2011

см. У меня есть один файл 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

Ответы [ 2 ]

6 голосов
/ 07 октября 2011

Вам нужно экранировать символ \ &:

find /home/jeegar/jig.c -type f -exec \
       sed -i 's/mkvFree(/mkvFree((void**)\&/g' {} \;

Символ & заменяет весь соответствующий ввод для шаблона.

2 голосов
/ 07 октября 2011

& - метасимвол в выражении замены, означающий «всю строку поиска». Процитируйте это, и это должно работать.

...