Powershell:解析日志文件区分大小写

时间:2013-05-10 07:28:01

标签: powershell

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

2013-04-18T10:38:04,110 INFO [00002865] 30:toto.toto - 警告:La变量sousdomnexistedéjàpourle 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象征性服装NBPERA非特质。

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

2 个答案:

答案 0 :(得分:1)

用以下代码替换您的模式:

Select-String -Pattern "\sWARN\s"

\s用于空间。您可以在模式字符串

中使用正则表达式

答案 1 :(得分:0)

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

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