我正在尝试编写一个shell脚本来在Ubuntu 14.04上找到替换这行代码。
//Code before script runs
/*define('FS_METHOD','direct');*/
//Code after script runs
define('FS_METHOD','direct');
sudo sed -i "s@/*define('FS_METHOD','direct');*/@define('FS_METHOD,'direct');@g" /home/example/example.txt
运行这行代码后,我没有收到任何错误,但它没有删除/ * * /我相信这是因为单引号。我试过用反斜杠来逃避它们,但它也不起作用。任何人都知道如何让这个工作?
答案 0 :(得分:2)
不,问题是*
是一个RE metacharcter,所以你需要逃避它以便按字面意思对待它:
$ sed "s@/\*define('FS_METHOD','direct');\*/@define('FS_METHOD,'direct');@g" file
define('FS_METHOD,'direct');
或更简洁:
$ sed "s@/\*\(define('FS_METHOD','direct');\)\*/@\1@" file
define('FS_METHOD','direct');