使用replace来清理select-string输入

时间:2014-03-25 16:09:40

标签: regex parsing powershell replace

我正在解析日志并获取输出,但我想清理输出。目前我在输出中获取日志文件的完整路径,该路径很长且不需要。下面的代码是我试图使用的,但我收到一个错误,我的替换不是一个有效的正则表达式。

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

我不确定我需要做什么才能获得正确的输入,我是否需要转义字符?

1 个答案:

答案 0 :(得分:1)

反斜杠是正则表达式转义字符。要在正则表达式中将其用作文字匹配的一部分,必须使用另一个反斜杠进行转义。如果您不确定哪些字符需要转义,[regex]有一个可以使用的转义方法,它将为您转义所有保留字符:

[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'