grep検索で「//」を含む結果を省略

grep検索で「//」を含む結果を省略

端末に表示したくないテキストの1行に対して大規模なC ++コードベースを検索しようとしています。約40の異なるファイルを見つけてstd::cout返しました。私が直面している問題は次のとおりです。

  • 私が直接追加したのではなく、どこにいるのかわかりません。
  • メモリ位置のみを出力するポインタなので、検索するコンテキストはありません。
  • コードベースはかなり大きく、かつてsdt::coutデバッグ目的で使用されていましたが、後でコメントアウトされた他の多くのインスタンスが含まれています。

私の質問は最後の質問に関連しています。使っています

grep -rle 'std::cout' .

std::cout検索を実行すると、正の値と実際にコメントアウトされた行の他のすべてのケースが返されます//std::cout// std::coutstd::cout

コメントアウトされた行が削除されるように埋め込まれたgrep行を省略するようにmyをどのように変更できますか?//

ベストアンサー1

std::cout前に何もない場合にのみ見つけることができます//。正規表現構文には否定は含まれません。各正規表現は補数を作成して否定できますが、補数が非常に大きくなる可能性があります。ここは大きすぎません。

grep -rl -E '^/?([^/]/?)*std::cout' .

すべての発生項目を一覧表示しstd::coutて発生項目をフィルタリングすることも//.*std::coutできますが、これにより次の項目が非表示になりますstd::cout << foo; // std::cout << bar;

grep -r 'std::cout' . | grep -vE '^[^:]*:.*//.*std::cout' | sed -e 's/:.*//'

または、次のようにC ++コードを解析するツールを実行できます。商標

おすすめ記事