回答:
このgrepコマンドは--color=alwaysオプションを受け入れるため、使用できます
grep 'keyword1' file.log --color=always | grep 'keyword2'
以下のようgertvdijkポイントうち、このコマンドは非効率的かもしれないが、それはKEYWORD1とKEYWORD2の両方を含むすべての行を探します。異なる色で強調表示する場合は、使用できます
grep 'keyword1' file.log --color=always | GREP_COLORS="mt=01;34" grep --color=always 'keyword2'
keyword2を青で強調表示します。このmt部分は、grepこのCSIコードを使用して一致するテキストを強調表示することを01;34意味し、「通常の背景に太字の青い前景」を意味します。
grep -R --color=always keyword1 . | grep keyword2はずです。出力を再度リダイレクトしていますか(2番目grepをにパイプするなどless -R)?その場合--color=always、2番目にも追加する必要があります。
--color=autoにが必要になります。grep'keyword2'
--color=alwaysあなたがそれをパイプするlessか何かにしたいかもしれないので、答えに追加しました。
の別のインスタンスにパイプするのではなく、実際の正規表現を試してくださいgrep。例:
grep -E "\<foo\>.*\<bar\>" file
残念ながら、これはキーワードがこの順序でのみ一致する一致する行に制限されます。とにかく、grepあなたの質問での使用はかなり非効率的であり、あなたはそれを避けるべきです。おそらく、@ DanielHの答えは、あなたの場合にはかなり簡単です。
キーワードの「または」マッチングには、これを定期的に使用します。
grep -E "(foo|bar)" file
foo.*bar|bar.*fooあるのか、それともこの場合に必要なのかはわかりません(おそらく、キーワードの標準的な順序を持つログファイルのようです)。更新する前に答えを追加しましたが、連鎖grepsが本当に必要な場合(またはのように、色付きの出力を端末に送信すべきでない場合grep | less -R)に備えて、それを保持します。