0

我有以下代码:

egrep -v "(^/\*\!40101.*\*/;$|^/\*\!50001.*\*/;$)"

跳过这样的文本可以正常工作:

/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
/*!50001 DROP TABLE IF EXISTS `some_table_name`*/;

但是,如果我有这样的文字:

/*!50001 CREATE TABLE `some_table_name` (
  `id` int(11),
  `field1` char(30),
  `field2` char(30),
) ENGINE=MyISAM */;

它未能跳过它。任何的想法?

我想要的是:

如果有文字

Start with : /*!40101
End with : */;

或者

如果有文字

Start with : /*!50001
End with : */;

我想跳过整行或整块。知道怎么做吗?

4

1 回答 1

0

您的正则表达式会跳过从 40101 或 50001 开始直到行尾的所有内容,但不会跳过下一行。看起来 egrep 不支持多行匹配。

于 2013-10-10T02:35:28.920 回答