awk反转正则表达式模式规则

时间:2013-10-11 02:02:47

标签: awk pattern-matching

我有这样的代码:

awk '(/\/\*\!/),(/\*\/\;/)'

将匹配这样的所有内容:

/*!40101 SET character_set_client = utf8 */;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!50001 CREATE TABLE `sometable` (
  `id` int(11),
  `name` char(30),
  `user` char(30),
) ENGINE=MyISAM */;

如何反转上面我的awk代码的匹配?我试过了:

awk '!(/\/\*\!/),(/\*\/\;/)'
awk '!(/\/\*\!/),!(/\*\/\;/)'

2 个答案:

答案 0 :(得分:3)

使用变量

awk '/\/\*!/{a=1}!a;/\*\/;/{a=0}' test.in

其他一些说明:

  • 您不需要括号
  • 您无需转义!;

答案 1 :(得分:1)

使用

awk '(/\/\*\!/),(/\*\/\;/){next}{print}'