0

我是 powershell 的新手,我需要一个非常简单的脚本的帮助。我有一个大日志文件(100 M),我想解析并返回错误和警告消息。
这是日志文件的格式:

2013-04-18T10:38:04,110信息 [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 信息 [00002865] 30:toto.toto - 警告:参考符号明显 NBPERA 非 traitée。

我想,我需要使用类似 -clike 选项的东西吗?

4

2 回答 2

1

将您的模式替换为:

Select-String -Pattern "\sWARN\s"

\s是为了空间。您可以在模式字符串中使用正则表达式

于 2013-05-10T08:52:44.787 回答
0

在上面的代码模式中,WARN 将捕获字符串“WARNING”,因此您需要在正则表达式中添加额外的空格 \s 以避免 WARNING,因此正确的代码将是

$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 回答