grepを使用したパラメータの強調表示

grepを使用したパラメータの強調表示

Bashのハイライト機能を使用するのに役立ちます。

私の目標は、3つのパラメータを特定し、それを3つの異なる色で強調表示することです。私はこれをやってきましたが、これを行う方法について頭を閉じることはできません。

頑張った

入力する:

user@syslog:~$ grep --color=always Dwhite VPNsyslog-2016 | grep --color date | grep --color time

出力:

結果は強調表示され、Dwhite時間と日付は何らかの理由で強調表示されません。これらはすべて赤で強調表示されます。

私も試しました

user@syslog:~$ GREP_COLORS='mt=01;32' grep Dwhite VPNsyslog-2016| GREP_COLORS='mt=01;31' grep date VPNsyslog-2016 | GREP_COLORS='mt=01;34' time VPNsyslog-2016 

出力:

何もありません。

文法がすべて誇張された場合でもご了承ください。私はこの分野について非常に見知らぬ人であり、プログラマーでもありません。私はシステムログを見やすくするネットワーク管理者です。

答え1

grep -E --color=always 'Dwhite|date|time' VPNsyslog-2016

同じコマンドで異なる一致の異なる色はサポートされていません。パイプラインで互いに接続するのはgrep事実上AND演算です(したがって、3つのパターンすべてに一致する行のみが出力され、最終パターンのみが強調表示されます)。

より設定可能なログファイルを強調表示したい場合は、特別なツールを使用する必要があります。西沢ブロックするあやお色素沈着または強調する(他の中から)。これらはすべてLinuxディストリビューション用にすでにパッケージ化されています(もちろん、DebianやUbuntuなどのDebian派生製品にもあります)。

答え2

次のことを試すことができます。

user@syslog:~$ cat VPNsyslog-2016 | GREP_COLORS='mt=01;32' grep --color=always 'Dwhite' | GREP_COLORS='mt=01;31' grep --color=always 'date' |  GREP_COLORS='mt=01;34' 'time'

catまたはコマンドを実行しないでください

user@syslog:~$ GREP_COLORS='mt=01;32' grep --color=always 'Dwhite' VPNsyslog-2016 | GREP_COLORS='mt=01;31' grep --color=always 'date' |  GREP_COLORS='mt=01;34' 'time'

最後のエントリでは、STDINは最初のファイルの内容を持つため、各実行でファイルを指定するgrep必要はありません。grep

あなたは--color=always旗を逃した。

答え3

yデフォルトは、--color端末に出力するときに色だけを出力します。出力がパイプに入ると、grepは出力の色を指定するために追加のエスケープシーケンスgrepが挿入するプログラムによってその出力が解析されると仮定します。パイプに入っても出力を色分けするには、次のよう--color=alwaysに渡します。みんなグレブコール。

GREP_COLORS='mt=01;32' grep --color=always Dwhite VPNsyslog-2016 |
GREP_COLORS='mt=01;31' grep --color=always date |
GREP_COLORS='mt=01;34' grep --color=always time

grep は一致する行だけを印刷します。あなたの例では、パイプはおよびとをDwhite含むdate行だけを印刷しますtime。すべての行を印刷するには、各 grep 呼び出しに必要な内容を検索するか、空の文字列が含まれているため、各行が出力に表示されます。

GREP_COLORS='mt=01;32' grep --color=always -e '' -e Dwhite VPNsyslog-2016 |
GREP_COLORS='mt=01;31' grep --color=always -e '' -e date |
GREP_COLORS='mt=01;34' grep --color=always -e '' -e time

または正規表現を使用してください。

GREP_COLORS='mt=01;32' grep --color=always -E '|Dwhite' VPNsyslog-2016 |
GREP_COLORS='mt=01;31' grep --color=always -E '|date' |
GREP_COLORS='mt=01;34' grep --color=always -E '|time'

しかし、実際に他のものをインストールしたくないコンピュータに閉じ込められていない限り、次に示すように出力をカラー化するように設計されたツールを使用することをお勧めします。キャスの答えまたはこのスレッド

関連情報