0
を選択したとき、私は現在、私のシスコログに色の構文を取得するために小さなRubyスクリプトを開発しています(となどALU、Huawey、など、後で他のメーカー...)正規表現の最適化テキスト
は私のアルゴリズムです:
- シスコログ構文の検出(
^DATE: %FACILITY-SEV-MNEMONIC: Message
) - テキストを選択し、変数に追加します。
- 色付きテキストをstdoutに印刷します。
もちろん、後でこのメーカーを各メーカーごとに繰り返します。ここで
は、ログの各行のコードです:
when /^(|\.|\*).*\s*.*\s(.*|.*\s.*): %.*-[1-6]-.*: .*$/ #Selecting IOS log as I expect.
/^(?<clock_sync>(\*|\.|))(?<d_month>\w{3})\s*(?<d_num>[0-9]*)\s*(?<d_hour>[0-9]{2}):(?<d_minute>[0-9]{2}):(?<d_second>[0-9]{2})(\.|)(?<d_msecond>([0-9]{3}|))(\s|)(?<host>(|.*)):\s(?<facility>.*)-(?<severity>.)-(?<mnemonic>.*):\s(?<message>.*)$/ =~ v # Get variables from log
puts ((dd_minute==d_minute) ? "| " : "+ ")+clock_sync.red+d_month.green+" "+d_num.green+" "+d_hour.green+":"+d_minute.green+":"+d_second.green+" |"+facility.bold+"-"+(severity.to_i>4? severity.bold.red : severity.to_i>2? severity.bold.brown : severity.bold)+"-"+mnemonic.bold+"| "+message
dd_minute = d_minute #Print Text
実行速度の点で私を満たしていません。最初の2行をマージする方が効率的だと思いますが、多くの試行にもかかわらず、私は正しい構文を見つけられませんでした。
多分あなたの一部が私に良いアドバイスを与えることができます。ありがとう。
このコードは非常に読みにくく、改善にはほとんど役立ちません。私は[Code Review Stack Exchange](http://codereview.stackexchange.com/)に投稿することをお勧めしますが、まず読みやすいようにフォーマットする時間を取ってください。 –
あなたの答えはヨルダンありがとう。 あなたが言ったように、コードは正規表現のために複雑になることがありますが、主な構文は実際はとても簡単です。 最初に正規表現にマッチした後、いくつかの文字を抽出して変数に入れ、いくつかの色で印刷します。 主な質問は次のとおりです。実行時間とCPUを増やすために、1つの操作で一致させて抽出することはできますか? PC:シンタックスの簡潔さを示すために、軽いバージョンのコードを投稿しようとします。 –