ファイル内の特殊文字セットを含む行を見つける方法は?

ファイル内の特殊文字セットを含む行を見つける方法は?

c既存のプログラムを実行し、ここにコメントが含まれていることを確認するスクリプトを作成しています。

コメントタグで始めて終了する必要があります。

/* and */ 

この目標をどのように達成できますか?

例: 次のように動作します。

egrep "/\.*\./" sample.txt

しかし、/*/で始まり、終わる行だけをリストしたいと思います。たとえば、次の入力を考えます。 hi /*/ hello これは有効なコメントではありませんが、コマンドを使用すると出力に表示されます。

答え1

/*と を含む行を検索するには、*/次の操作を行う必要があります。

grep '/\*.*\*/' file

/*で始まり終わる行を見つけるには、*/次のようにします。

grep '^/\*.*\*/$' file

開いているコメントの前と閉じるコメントの後にスペースを入れるには、次のようにします。

grep -E '^\s*/\*.*\*/\s*$' file

特殊文字なので*エスケープ( )する必要があります\*。それ以外はすべてストックキャラクターだけです。上記の正規表現は、/*ゼロ個以上の文字(.*)から最大まで一致します */

答え2

1つの方法はsedを使用することです。

sedの%。/*。*/%%; /^$/d'

たとえば、コメントを削除するには、次のようにします。

printf "hello\nx=1\n/* some comment */\nnot some comment\nthis has /* but no close\n" |
sed 's%.*/\*.*\*/%%; /^$/d'

関連情報