2011-12-20 60 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

相关问题