
行の任意の部分にあり、複数行にまたがる可能性のあるコメントをファイルから削除しようとしています。
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 正規表現で十分です。
perl -0777 -pe 's,/\*.*?\*/,,gs' inputfile