Sed特殊字符

时间:2013-03-03 09:44:41

标签: sed

我正在尝试替换:

#/*!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

我想我的问题是问题'但我无法找到解决方案 你能帮帮我吗?

谢谢!

1 个答案:

答案 0 :(得分: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';