1

我有这样的代码:

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 '!(/\/\*\!/),!(/\*\/\;/)'
4

2 回答 2

3

使用变量

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

其他几点注意事项:

  • 你不需要括号
  • 你不需要逃跑!;
于 2013-10-11T02:24:13.410 回答
1

利用

awk '(/\/\*\!/),(/\*\/\;/){next}{print}'
于 2013-10-11T02:23:44.413 回答