我正在尝试从文件中删除注释,该注释可能位于一行的任何部分并且跨越多行。
struct my_struct{
field1;
field2; /** comment 1
*/ field3;
/* comment 2 */
} struct_name;
我需要得到
struct my_struct{
field1;
field2;
field3;
} struct_name;
我尝试使用
grep -o '[^/*]*[^*/]'
删除匹配 /* 和 */ 之间的任何文本,但它会删除注释符号,但不会删除之间的文本。正确的方法是什么?如果还有另一种使用“sed”的方法,那么也很高兴知道这一点。
答案1
答案2
如果您只想删除/*
和之间的任何内容*/
,并忽略 C 语言的所有怪癖,例如 C99 风格的//
注释、带引号的字符串和换行符的反斜杠转义,那么一个简单的 Perl-regex 应该可以做到:
perl -0777 -pe 's,/\*.*?\*/,,gs' inputfile