看到我有一个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
接受了此命令答案 0 :(得分:6)
你需要逃避\&字符:
find /home/jeegar/jig.c -type f -exec \
sed -i 's/mkvFree(/mkvFree((void**)\&/g' {} \;
&
字符将替换模式的整个匹配输入。
答案 1 :(得分:2)
&
是替换表达式中的元字符,意思是“整个搜索字符串”。引用它,它应该工作。