端末に表示したくないテキストの1行に対して大規模なC ++コードベースを検索しようとしています。約40の異なるファイルを見つけてstd::cout
返しました。私が直面している問題は次のとおりです。
- 私が直接追加したのではなく、どこにいるのかわかりません。
- メモリ位置のみを出力するポインタなので、検索するコンテキストはありません。
- コードベースはかなり大きく、かつて
sdt::cout
デバッグ目的で使用されていましたが、後でコメントアウトされた他の多くのインスタンスが含まれています。
私の質問は最後の質問に関連しています。使っています
grep -rle 'std::cout' .
std::cout
検索を実行すると、正の値と実際にコメントアウトされた行の他のすべてのケースが返されます//std::cout
。// std::cout
std::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 ++コードを解析するツールを実行できます。商標。