Удалить комментарии в файле C

Удалить комментарии в файле C

Я пытаюсь удалить комментарии из файла, которые могут находиться в любой части строки и занимать несколько строк.

 struct my_struct{
  field1;
  field2; /** comment 1
  */ field3;
  /* comment 2 */
 } struct_name;

мне нужно получить

struct my_struct{
  field1;
  field2; 
  field3;
 } struct_name;

Я пробовал использовать

grep -o '[^/*]*[^*/]' 

удалить любой текст между сопоставлением /* и */, но это удаляет символы комментариев, но не текст между ними. Каков правильный способ? Если есть другой способ с использованием 'sed', было бы неплохо узнать и его.

решение1

Вы можете сделать это с помощьюКомпилятор С::

gcc -fpreprocessed -dD -E -P file.c

проверятьman gcc

решение2

Если вы просто хотите удалить все, что находится между /*и */, и проигнорировать все особенности языка C, такие как //комментарии в стиле C99, строки в кавычках и экранирование обратным слешем новых строк, то вам подойдет простое регулярное выражение Perl:

perl -0777 -pe 's,/\*.*?\*/,,gs' inputfile

Связанный контент