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