Regex 如何删除前面带有#的注释,但保留#include和#!

Regex 如何删除前面带有#的注释,但保留#include和#!,regex,sed,grep,Regex,Sed,Grep,出于不同的目的,我需要删除这段代码的注释部分 我使用grep和sed删除以#、//和;开头的所有行;,以及由/*和*/括起的多行 一个问题是,此规则还删除了以#include和#开头的行/bin/任何有效的代码语句 有没有办法保存包含#include和#的行!在开头,但使用grep或bash删除以#开头的其余行 提前感谢您的回复。使用\来逃避,换句话说,如果您想保留请像\一样使用它。但是,请您更具体地介绍编程语言,给您一个准确的答案。egrep“^*([^#][124;#!|#包括|$)”我认为

出于不同的目的,我需要删除这段代码的注释部分

我使用grep和sed删除以#、//和;开头的所有行;,以及由/*和*/括起的多行

一个问题是,此规则还删除了以#include和#开头的行/bin/任何有效的代码语句

有没有办法保存包含#include和#的行!在开头,但使用grep或bash删除以#开头的其余行


提前感谢您的回复。

使用
\
来逃避,换句话说,如果您想保留
请像
\
一样使用它。但是,请您更具体地介绍编程语言,给您一个准确的答案。

egrep“^*([^#][124;#!|#包括|$)”
我认为最简单的方法是用
egrep-v
来处理原始grep命令,如下所示:

grep "your-pattern" *.c | egrep -v "^\s*#(!|include|define)\b"

试着去看那些消极的人。我不熟悉sed,但是类似这样的东西可能会起作用:
#(?!!| include)
上面的代码行是有效的。是否有一种方法可以同时包含//的负匹配项?当然:
“^*([^#/][]|#!|#包含|/([^/][|$)|$)”
。然而,多行注释并没有那么简单。