2011-11-13 22 views
1

特定のパターンでデータが繰り返されるログファイルを解析する必要があります。私は、データ内の特定の「キーワード」を検索し、次の行からデータを抽出する必要があります。私はファイル全体についてこれを続ける必要があります。 これは基本的なperlスクリプトを使って行うことができます。しかし、この種の機能を単純化するperlモジュールはありますか?繰り返し検索してファイルの内容を抽出するPerlモジュール?

+2

基本的なスクリプトで実行できるのであれば、モジュールの作成のポイントは何ですか? – Mat

+0

こんにちはマット、私はモジュールを書いたくありませんが、より多くのオプションとコントロールを提供するこの種のアクティビティをターゲットにしたモジュールがあるかどうかをチェックするだけです。 – pkr13

+1

ログファイルの小さなサンプル(20行)を表示します。 – toolic

答えて

1

おそらくそのようなモジュールはありません。コードは非常に些細なので、OTOH の詳細はかなり問題に特化しています

私はこのような問題を何度も経験しています。入力のようなものされています:

Date: 2011-11-10 
<an interesting line> 
<another interesting line> 
Date: 2011-11-11 
<more interesting lines> 

そして私は、それぞれの日付を知りながら、すべての「面白いライン」を抽出するために必要なてきました。私はonelinersまたは短い使い捨てスクリプトが目的のために非常に成功していると思う。オンライナーでは、-l-aなどの有用な情報に精通しているのが良いです。 perl -wlane '...'それは何千もの時間を書きました。

0

正確にこのタイプの処理の例であるcgrepを見ることができます。これは、元の一致を削除し、結果をフォーマットし、0試合前ラインと次々に出力し、正規表現をgrepすなわち

cat mylog | cgrep -w0:1 'regexp' | grep -v 'regexp' | sed 's/.../.../' 

すなわち、パイプラインで使用することができます。最後のステップとしてsedを使用したくない場合もありますが、これは単なる例です。

cgrepは、プログラミングPerl(Camel)の書籍の初版に掲載されています。 It's pretty easy to find

0

他のオプションをご提案いただきありがとうございます。 実際に私は 'if'と 'flip-flop'演算子を使用すると、私の問題を非常にうまく解決することがわかりました。そして、これを使用した後、私はこのような簡単なタスクのための 'モジュール'に私の側からあまりにも多くのものを求めていることに気付きました:)。

関連する問題