PowerShell中的Select-String cmdlet。解析括号

问题描述 投票:1回答:3

我把它存储在如下所示的文本文件中:

Java 8 Update 111
Java 8 Update 111 (64-bit)
Java 8 Update 131
Java 8 Update 151
Java 8 Update 152

我正在使用PowerShell对这些信息做些什么,但在第一个障碍中挣扎。我使用Select-String匹配模式,它不起作用。

Select-String "\\server\JavaVersions.txt" -Pattern "Java 8 Update 111 (64-bit)"

似乎不起作用,但下面带回两者。

Select-String "\\server\JavaVersions.txt" -Pattern "Java 8 Update 111"

有没有人有任何想法为什么带括号的那个不起作用?是解析问题吗?我真的需要能够在另一个之前获得(64-bit)并分别采取行动。

powershell select-string
3个回答
3
投票

你必须逃避特殊的正则表达式字符。在你的案例括号。

Select-String '\\server\JavaVersions.txt' -pattern "Java 8 Update 111 \(64-bit\)"

https://www.regular-expressions.info/characters.html


2
投票

或者,使用-SimpleMatch关闭正则表达式匹配:

Select-String '\\server\JavaVersions.txt' -Pattern 'Java 8 Update 111 (64-bit)' -SimpleMatch

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string?view=powershell-5.1


1
投票

作为替代选项,如果您不需要为匹配使用正则表达式,则可以使用-SimpleMatch参数:

Select-String '\\server\JavaVersions.txt' -SimpleMatch "Java 8 Update 111 (64-bit)"

然后,您不需要执行任何正则表达式转义。

© www.soinside.com 2019 - 2024. All rights reserved.