1行のどの部分にも複数行にまたがる可能性があるファイルからコメントを削除しようとしています。
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
C99スタイルのコメント、引用文字列、改行文字のバックスラッシュエスケープなど、C言語のすべての欠点を無視して間の項目を/*
削除するには、単純なPerl-regexを使用します。*/
//
perl -0777 -pe 's,/\*.*?\*/,,gs' inputfile