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

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

次のような結果を出力するプログラムがあります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ページ形式とうまく機能するようにここで分割しています。

おすすめ記事