0

私はpowershellを初めて使用し、非常に単純なスクリプトについて助けが必要です. 解析してエラーと警告メッセージを返したい大きなログ ファイル (100 M) があります。
ログ ファイルの形式は次のとおりです。

2013-04-18T10:38:04,110 INFO [00002865] 30:toto.toto - 警告: La variable sousdomn existe déjà pour le fichier WORK.RGPDROITS.

目的は、太字の値 (WARN ; ERROR ; INFO の可能性があります) をチェックし、太字の値が "WARN" または "ERROR" である行を返すことです。

WARN 値でテストされたスクリプトは次のとおりです。

$logfile = "C:\log\logfile.log" 
cat $logfile |
Select-String -pattern WARN -CaseSensitive|
  select -expand line |
   foreach {
            write-output $_.
            }

残念ながら、文字列 WARNING が含まれている場合、「INFO」メッセージも返します。

2013-04-18T10:38:04,141 INFO [00002865] 30:toto.toto - 警告: Référence symbolique appeare NBPERA non traitée.

-clike オプションのようなものを使用する必要があると思いますか?

4

2 に答える 2

1

パターンを次のものに置き換えます。

Select-String -Pattern "\sWARN\s"

\sスペース用です。パターン文字列で正規表現を使用できます

于 2013-05-10T08:52:44.787 に答える
0

上記のコード パターンでは、WARN は文字列 "WARNING" をキャッチするため、WARNING を回避するために正規表現に余分なスペース \s を追加する必要があるため、正しいコードは次のようになります。

$logfile = "C:\log\logfile.log";
cat $logfile |
Select-String -pattern WARN\s -CaseSensitive|
  select -expand line |
    foreach {
      write-output $_.
    } 
于 2013-05-10T08:54:43.050 に答える