Cプログラムから(一部)コメントを削除する

Cプログラムから(一部)コメントを削除する

Cプログラムで、同じ行に開始(/*)と終了()があるが同じ行にコードがないコメントなど、古いスタイルのコメントの行全体を削除するには、bashスクリプトを使用する必要があります。*/以下はCプログラムの例です。

/* Comment 1 */
printf("It is /* Comment 2 */\n");
x = 5; /* Comment 3 */
            /* Comment 4 */
/* Comment 5 */ y = 0;
            /*
             * Comment 6
             */
            // Comment 7

ただし、次のように表示する必要があります。

printf("It is /* Comment 2 */\n");
 x = 5; /* Comment 3 */
 /* Comment 5 */ y = 0;
            /*
             * Comment 6
             */
            // Comment 7

すべてのコメントを削除する方法はわかっていますが、特定のコメントを削除する方法はわかりません。

スクリプトはテキストファイルから入力を読み取り、出力を別のファイルに書き込む必要があり、すべてのI / Oファイル名をコマンドラインに指定する必要があります。

ベストアンサー1

これはsed移植可能です。

sed '\_^[[:blank:]]*/\*.*\*/[[:blank:]]*$_d' file.c

^ゼロ個以上の空白()で始まり[[:blank:]]*、コメントを開始し(/\*)、他の内容を含め(.*)、コメントを終了して(\*/)、スペースのみを含む残りの行()はすべて削除され[[:blank:]]*ますd。もちろんを使ってこれを行うこともできますgrep -v

これにより、次の項目も削除されます。

/* between two comments */ x = 0; /* could be some code */

おすすめ記事