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 */