キーワードの発生を異なる色で表示

キーワードの発生を異なる色で表示

次のような結果を出力するプログラムがありますstdout

[OK]      Something is ok
[OK]      Something else is also ok
[FAIL]    This does not look good
[FAIL]    Neither does this
[OK]      At least this is fine

FAIL出力でエラーを見つけやすくするために、キーワードの発生を赤で表示したいと思います。いいえ他のメッセージを削除してください。キーワードも緑色で強調すればいいと思いますOK:)

パイプを使用すると、キーワードのある行のみが表示されますegrep --color FAILFAIL

答え1

manatwork他の質問の驚くべき小さい「または何も」ハッキングに基づいて私はこれを提供します。二つハイライトカラー:

 $ myprogram | \
   GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
   GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'

つまり、毎回異なる環境変数を使用してgrep出力を2回実行します。GREP_COLORS

「01; 32」の値は「太い緑」を意味し、他の値は「太い赤」を意味します。ウィキペディアを見るANSIコードに関する記事より多くのアイデアを得るために。

残念ながら、これにはGNU grepバージョン2.5.3以降が必要です。以前のバージョンのGNU grepはさまざまな色付けメカニズムをサポートしていましたが、これらのバージョンにはパイプラインでその機能を何度も使用できないバグがありました。 BSD grepはパイプラインで2回動作する以前のGNU grepシェーディングメカニズムをエミュレートしますが、ハッキングのために「empty subexpression」と叫びますmanatwork

最初の2行の終わりからバックスラッシュを削除して1行にすることができます。明確さを高め、SEページ形式とうまく機能するようにここで分割しています。

答え2

multitailまたはcczeを使用してこれを実行できます。両方とも、一致と色付けのための正規表現を記述する構成を許可します。

答え3

Warren Youngの答えに基づいて、次のように書きました。このPythonスクリプトこれは同じ操作をよりエレガントに行い、タイピングが少なくて済みます。スクリプトの使用方法は次のとおりです。

cat yourfile | himul '\[OK\]' '\[FAIL\]'

関連情報