2013-05-10 81 views
0

我是新來的powershell,我需要一個非常簡單的腳本的幫助。 我有一個很大的日誌文件(100 M),我想解析並返回錯誤和警告消息。
這裏是日誌文件的格式:Powershell:解析日誌文件區分大小寫

2013-04-18T10:38:04110 INFO [00002865] 30:toto.toto - 警告:拉可變sousdomn existe似曾相識傾樂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 $_. 
      } 

不幸的是,它也返回 「INFO」 消息時它們包含字符串警告:

2013-04-18T10:38:04141 INFO [00002865] 30:toto.toto - WARNING:參考象徵意大利NBPERA非traitée。

我想,我需要使用類似-clike選項的東西?

回答

1

替換爲你的模式:

Select-String -Pattern "\sWARN\s" 

\s是空間。您可以使用模式串正則表達式

+0

謝謝。它也可以工作。 – MatStack 2013-05-10 09:30:31

+0

您不必感謝,只需將答案標爲有用(向上箭頭)或作爲答案 – 2013-05-10 09:42:26

0

在上面的代碼模式WARN將趕上字符串「警告」,所以你需要在正則表達式中添加額外的空間\ s到避免WARNING所以正確的代碼會

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

非常感謝!它的工作好:) – MatStack 2013-05-10 09:30:09