0

我正在尝试替换:

#/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;

和 :

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';

这是我的 sed 命令,它不起作用...

sed 's|#/\*\!40101 SET @OLD_SQL_MODE=@@SQL_MODE\, SQL_MODE=`NO_AUTO_VALUE_ON_ZERO` \*/;|SET @OLD_SQL_MODE=@@SQL_MODE\, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'\;|' file.sql > filenew.sql

我想我的问题是字符'但我找不到解决方案你能帮帮我吗!

谢谢 !

4

1 回答 1

0

要绕过在sed命令中使用单引号的问题,请将其括在双引号之间:

sed "s|#/\*\!40101 SET @OLD_SQL_MODE=@@SQL_MODE\, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' \*/;|SET @OLD_SQL_MODE=@@SQL_MODE\, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'\;|" file.sql > filenew.sql

它产生:

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
于 2013-03-03T10:10:36.223 回答