
Я пытаюсь удалить комментарии из файла, которые могут находиться в любой части строки и занимать несколько строк.
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:
gcc -fpreprocessed -dD -E -P file.c
проверятьman gcc
решение2
Если вы просто хотите удалить все, что находится между /*
и */
, и проигнорировать все особенности языка C, такие как //
комментарии в стиле C99, строки в кавычках и экранирование обратным слешем новых строк, то вам подойдет простое регулярное выражение Perl:
perl -0777 -pe 's,/\*.*?\*/,,gs' inputfile