我正在尝试编写一个 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
运行这行代码后,我没有收到任何错误,但它没有删除/* */我相信这是因为单引号。我试过用反斜杠转义它们,但它也不起作用。有人知道如何让它工作吗?
最佳答案
不,问题是 *
是一个 RE 元字符,因此您需要将其转义以对其进行字面处理:
$ 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');
关于shell - SED 用单引号和双引号替换内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36699911/