看到我有一个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' {} \;
&字符会将整个匹配的输入替换为模式。

09-07 10:05