私はOSXを使用していますが、これは問題に大きな影響を与えないと思います。私は.bash_profile
基本的にエイリアスを使ってgrep
カラー出力を取得します。
alias grep='grep --color=always'
私は通常、次のような方法でリポジトリ内のファイルの内容を検索します。
grep --include=*.cpp -Ern . -e "(foo|bar)"
しかし、私はしばしばsay for pipingを使用して結果をさらに具体化したいと思いますgrep -v "colorbar"
。
問題は、2番目のgrep
コマンドがカラー出力で実行されるため、除外パターンと一致しないようです。
明らかに、色なしで最初の検索を実行でき、すべてがうまく機能します。しかし、この問題を解決する方法がある場合は、色を維持することをお勧めしますか?
答え1
簡単で明確な答えは次のとおりです。
- エイリアスをhasに変更してください
--color=auto
。always
- 必要に応じてgrepコマンドをパイプします。
パイプラインの末尾に追加のgrepコマンドを使用して、目的の結果の色を指定します。たとえば、次のようになります。
grep --include=*.cpp -Ern . -e "(foo|bar)" | grep -v colorbar | grep -E -e "(foo|bar)"
ただし、これにより、ファイル名とファイル番号の色が正しく指定されません。
別の考えられる解決策ははるかに厳しいですが、まだ言及する価値があります。pcregrep
よりクールな正規表現を使用して、1つの正規表現ですべてのフィルタリングを処理できます。
答え2
/etc/profile.d/colorgrep* ファイルの削除 os linux の最新バージョンでは、greg/egrep と fgreg のエイリアスを強制的に適用し、ファイルを削除すると正常に戻ります。