我正在学习PowerShell并希望匹配变量中的字符串。考虑这个例子:
$string = ipconfig
Select-String -InputObject $string -Pattern '127.0.0.1'
返回整个字符串。不只是'127.0.0.1'.
所以我尝试了:
Select-String -InputObject $string -SimpleMatch '127.0.0.1' -AllMatches
这也返回整个字符串。我究竟做错了什么?我只想看到比赛,而不是其他线路。
答案 0 :(得分:0)
Select-String返回.Matches
属性,该属性是匹配项的集合。 .Value
属性是匹配的值:
$string = ipconfig
(Select-String -InputObject $string -Pattern '127.0.0.1').Matches.Value
此示例将返回所有看似IP地址的值:
(Select-String -InputObject $string -Pattern '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' -AllMatches).Matches.Value
请注意,如果您匹配精确模式(例如没有通配符/正则表达式),那么您可以使用-Quiet
根据模式是否匹配返回true / false:
$MyString = '127.0.0.1'
If (Select-String -InputObject $string -Pattern $MyString -Quiet) { $MyString }
然后
答案 1 :(得分:0)
正如arco444在评论中提到的,你可以简单地写:
> $string | Select-String -Pattern "127.0.0.1"
有关更多示例,请参阅Select-String Documentation。