1

複数行一致の正規表現の設定に問題がある

失敗したすべてのクエリ (受信ステータスは 2 ) を取得しようとしていますが、成功していません

Perlの1行は次のようになります

perl -e '$text = `cat errors.log`;while($text =~ m/^request.*?(\/.*?)\n.*?receive status is 2$/sgm ){print $1."\n";}'

サンプルログは以下の通り

***** test 0: *****
* Request:
request = /Lookup?url=URL1

received in 0.108 milliseconds
receive status is 2
-- STATUS : 1 --
      <RESULT SET 1>


***** test 1: *****
* Request:
request = /Lookup?url=URL2

received in 44.753 milliseconds
receive status is 0
-- STATUS : 0 --
      <RESULT SET 2>


***** test 2: *****
* Request:
request = /Lookup?url=URL3

received in 44.753 milliseconds
receive status is 2
-- STATUS : 3 --
      <RESULT SET 3>

URL1、URL3のように失敗したすべてのURLを取得することを検討しています

4

2 に答える 2

0

これも、少しの状態で簡単です。

perl -lne '$last = $1 if /request = (.+)/; print $last if /^receive status is 2/' errors.log

ログが大きくなるにつれて、ログ全体をメモリに格納することは望ましくなくなります。また、ログにはかなり大きくなる方法があります。

于 2013-06-25T10:49:50.047 に答える