私は現在、特に大きなログ ファイル (25MB 以上) の選択をオンザフライで解析し、Java サーブレットを介してユーザーに返す自動プロセスを作成しようとしています。
これらのログのサイズが原因で、メモリにロードする前に、Linux 解析コマンドを実行して、ユーザーに関連するセクションを取得しようとしています。これらのセクションは、ログ全体に広がる可能性があります。
私はまだ正規表現とテキスト解析ツール (sed など) のコツをつかむ初期段階にあり、誰かが現在の問題に向けて正しい方向を示してくれることを望んでいました。
行の特定の項目 (例: KEY1) を参照するログの選択があり、その後にこの項目に関する不明な行数の情報が続きます。
ログは次の項目に切り替わり、繰り返されます
次の形式のファイルを取得できるLinuxベースのテキストコマンドの組み合わせがあるかどうかを調べようとしています
This is the first line and should not display
This is a section containing the text KEY1
Line 1
Line 2
Line 3
Line 4
This is a section containing the text KEY2
BadLine 1
BadLine 2
This is a second section containing the text KEY1
Line 5
Line 6
This is a section containing the text KEY3
BadLine 3
BadLine 4
BadLine 5
BadLine 6
This is a third section containing the text KEY1
Line 7
Line 8
Line 9
This is the last line
そして戻る:
This is a section containing the text KEY1
Line 1
Line 2
Line 3
Line 4
This is a second section containing the text KEY1
Line 5
Line 6
This is a third section containing the text KEY1
Line 7
Line 8
Line 9
This is the last line
コマンド
sed -n '/KEY1/,/KEY2/p' file
最初のセクションを取得する仕事をしますが、必要なものすべてを抽出する一般的な方法を見つけるのに苦労しています。
どんな助けでも大歓迎です。
ありがとう
- 編集 -
2013/06/20 03:10:01 PM| FINE |S9180 |[Device] [ID:128]
foo
bar
foo
bar
------------------------------------------
foo
bar
------------------------------------------
2013/06/20 03:10:02 PM| FINE |S9180 |[Device] [ID:132]
Other foo
Other bar
------------------------------------------
Other foo
Other bar
Other foo
Other bar
------------------------------------------
2013/06/20 03:10:03 PM| FINE |S9180 |[Device] [ID:128]
foo
bar
------------------------------------------
foo
bar
foo
bar
------------------------------------------
foo
bar
明確にするために、これは私が使用している形式です。ログ内の特定のデバイスに関するすべての情報を取得しようとしています。たとえば、キー[ID:128]の下のすべてのテキスト、ただし[ID:132]の下のセクション (または 、デバイスが入る特定の順序がないため、ID:128以外のID)は無視します。