egrep:开始和结束之间的正则表达式

时间:2013-10-10 02:32:21

标签: regex grep

我有以下代码:

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 : */;

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

1 个答案:

答案 0 :(得分:0)

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