2017-10-06 3 views
0

/* */などのコメントのパターンをスキップしたいと思います。例えば、fの :/* * /間のコメントのパターンをスキップしたい

My name is 
/* 
alex 
nice man 
*/ 
alex is a nice man 

コマンド:のみ

git grep "alex" f 

が印刷:

alex is a nice man 

私はGitのはgrepで使用することを好みます。

+0

[編集ヘルプ](http://stackoverflow.com/editing-help)をご覧ください。 – Cyrus

+0

私はあなたの答えを理解していない@Cyrus – Alex

答えて

0

grepは、の略です。つまり、正規表現をグローバルに検索し、一致する文字列を出力します。 awkを使用する必要がありますので、あなたがやろうとしているのは、はるかに単純な声明を超えています:

$ awk 'index($0,"/*"){f=1} index($0,"*/"){f=0} !f && /alex/{print}' file 
alex is a nice man 

上記は、あなたが表示され、簡単な例では動作しますが、それはこのように複数のコメントなど、他のケースのために失敗します。ターゲット行の開始/終了の行またはコメント、または文字列内などの他の構文のコメントデリミタ。

これらのケースがある場合(Cなどのプログラムの場合のように)、テキスト処理ツールでこれを行おうとしないでください。たとえば、次のような言語パーサーが必要です。 https://stackoverflow.com/a/35708616/1745001

関連する問題