2014-03-25 37 views
0

我解析日誌和抓取輸出,但我想清理輸出。目前我正在輸出很長且不需要的輸出中的日誌文件的完整路徑。下面的代碼是我正在嘗試使用的,但我得到一個錯誤,我的替換不是一個有效的正則表達式。使用替換來清理選擇字符串輸入

select-string $_ -pattern "gam.exe : Error 409: Entity already exists" -context 1,0 | ForEach-Object{$_ -replace "D:\test1\user\mail\mail-Load\logs","" } 

我不知道我需要做什麼才能獲得替換權的輸入,我需要轉義字符嗎?

+0

你試過使用單引號而不是雙? – CAustin

+0

我剛剛做了,但似乎沒有改變錯誤。它不喜歡「D:\ test1 \ user \ mail \ mail-Load \ logs」,「」或'D:\ test1 \ user \ mail \ mail-Load \ logs',「」 –

回答

1

反斜槓是正則表達式轉義字符。要將它用作正則表達式中文字匹配的一部分,必須使用另一個反斜槓進行轉義。如果你不知道的字符需要進行轉義什麼,[正則表達式]有您可以使用將難逃所有保留的字符,你的逃生方法:

[regex]::escape("D:\test1\user\mail\mail-Load\logs") 
D:\\test1\\user\\mail\\mail-Load\\logs 

所以

'D:\\test1\\user\\mail\\mail-Load\\logs' 

是正則表達式你會用來匹配文字字符串

'D:\test1\user\mail\mail-Load\logs' 
+0

工作,我只需要逃避\現在它正在過濾正常。謝謝 –