次のような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 FAIL
へのパイプを実行すると、FAIL
キーワードが存在する行のみが表示されます。
他の質問でのmanatwork
の素晴らしい小さな「または何もない」ハックに基づいて、これを提供します。これにより、twoハイライトを取得する機能が追加されます色:
$ myprogram | \
GREP_COLORS='mt=01;32' egrep --color=always '\[OK\]|' | \
GREP_COLORS='mt=01;31' egrep --color=always '\[FAIL\]|'
つまり、毎回異なるGREP_COLORS
環境変数を使用して、出力に対してgrep
を2回実行します。
'01; 32 'の値は「ボールドグリーン」を意味し、もう1つは「ボールドレッド」を意味します。その他のアイデアについては、ウィキペディア ANSIコードに関する記事 を参照してください。
悲しいかな、これにはGNU grepバージョン2.5.3以降が必要です。古いバージョンのGNU grepは別のカラーリングメカニズムをサポートしていましたが、これらのバージョンにはBSD grepは、古いGNU grepカラーリングメカニズムをエミュレートし、パイプラインで2回機能しますが、「空のサブ式」と叫びます。 manatwork
ハックのため。
最初の2行の最後にあるバックスラッシュを削除して、すべて1行にすることができます。ここでは、わかりやすくするため、およびSEページ形式でニースを再生するために、ここで分割しました。
これにはmultitailまたはcczeを使用できます。どちらの場合も、構成で一致する正規表現と色を記述できます。
ウォーレンヤングの回答に基づいて、私は this Python script と記述しましたが、これは同じことをよりエレガントに、入力を大幅に減らしたものです。脚本:
cat yourfile | himul '\[OK\]' '\[FAIL\]'