2016-05-01 19 views
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行をマージする方が効率的だと思いますが、多くの試行にもかかわらず、私は正しい構文を見つけられませんでした。

多分あなたの一部が私に良いアドバイスを与えることができます。ありがとう。

+2

このコードは非常に読みにくく、改善にはほとんど役立ちません。私は[Code Review Stack Exchange](http://codereview.stackexchange.com/)に投稿することをお勧めしますが、まず読みやすいようにフォーマットする時間を取ってください。 –

+0

あなたの答えはヨルダンありがとう。 あなたが言ったように、コードは正規表現のために複雑になることがありますが、主な構文は実際はとても簡単です。 最初に正規表現にマッチした後、いくつかの文字を抽出して変数に入れ、いくつかの色で印刷します。 主な質問は次のとおりです。実行時間とCPUを増やすために、1つの操作で一致させて抽出することはできますか? PC:シンタックスの簡潔さを示すために、軽いバージョンのコードを投稿しようとします。 –

答えて

0

私は質問をする良い方法が見つからなかったので、いくつかの研究の後、私は間違った方向に行っていることに気付きました。

スクリプトの主な使い方は、ここで見つけることができる "hhighlighter" bash + perlコマンドの周りに再設計されました - > github.com/paoloantinori/hhighlighterありがとうございました。

関連する問題