2つの連続するgrep
コマンドを使用する場合、例:
echo "foo bar" | grep foo | grep bar
その後、最初のパターン( "foo")は強調表示されません。実際、grepは入力からカラーコードを削除しているようです。これを防ぐ方法はありますか?
--color=always
を使用します。
grep
は、出力がパイプ(またはファイル)かどうかを検出します。出力がファイルである場合、色はほとんど必要ありません。これは、ターミナルのエスケープシーケンスであるためです。通常:
foo ^[[01;31m^[[Kbar^[[m^[[K
例:
grep pattern file > result
オーバーライドするには、--color=always
を使用します。
grep --color=always pattern file | ...
例:
ファイルがある:
ID=111;Year=2013;foo=bar
ID=222;Year=2013;foo=baz
その後
grep --color=always ID file | grep --color=always 2013 | grep foo
ID
、2013
、foo
に色を付けます。
grep --color=always ID file | grep 2013 | grep foo
ID
とfoo
は色付けしますが、2013
は色付けしません。
1重要:また、色から追加されたclutterがチェーン内の次のコマンドに渡されることも覚えておく必要があります。 IDが色付けされると、(簡単に)一致させることはできません。 ID=111
。
場合によっては、端末の色in fileが必要になることがあります。たとえば、.
grep --color=always foo file > result
cat result
ただし、結果のファイルの移植性は非常に制限されます。
カラーリング自体も拡張です。
良い @ slm で述べたように、以下を追加できます。
export GREP_OPTIONS="--color=always"
あなたの.bashrc
などにしかし、何らかの理由でその影響を本当に理解していて、それでもやりたいのでない限り、しないでください。上記の事実により、多くの点でgrep
が壊れます 1。
頻繁に使用する場合は、alias
を追加します。
alias cgrep='grep --color=always'
GREP_OPTIONS
および--color
つのオプションを選択 :never
、auto
およびalways
。最初の2つは、GREP_OPTIONS
で考慮される唯一のものでなければなりません。
man
ページまたは gnu grep でGREP_COLORS
をチェックアウトすることもできます。