
我正在嘗試從文件中刪除註釋,該註釋可能位於一行的任何部分並且跨越多行。
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