2011-12-20 33 views
1

我有一個文件,該文件有以下內容PowerShell的選擇字符串失敗,因爲轉義序列

change sets: 
    promotion level: INITIAL 
    depends on: 
    [email protected]\My_PVOB ([email protected]\My_PVOB) 
    [email protected]\My_PVOB ([email protected]\My_PVOB) 
    [email protected]\My_PVOB ([email protected]\My_PVOB) 
    [email protected]\My_PVOB ([email protected]\My_PVOB) 

我想讀它有模式@ \ My_PVOB

所以我寫選擇 - 內容)像這樣的字符串選項。

Select-string -pattern "@\My_PVOB)" -path "C:\Baselines.txt" 

但我得到以下問題

parsing "@\My_PVOB)" - Unrecognized escape sequence \M. 

即使換着花樣爲

Select-string -pattern "@\\My_PVOB)" -path "c:\Baselines.txt" 

我收到以下錯誤

"@\\My_PVOB)" - Too many)'s. 

任何想法如何解決它?

回答

1

圓形支架是一個特殊字符,所以你應該逃避它:

Select-string -pattern "@\\My_PVOB\)" -path "c:\Baselines.txt" 
4

您可以使用遁法與他們的轉義代碼替換元字符:

PS> $pattern = [regex]::Escape('@\My_PVOB)') 
PS> $pattern 
@\\My_PVOB\) 

PS> Select-String -Path c:\Baselines.txt -Pattern $pattern 
+2

或者使用'-simpleMatch '完全避免正則表達式評估。 – 2011-12-20 13:59:49