Select-String返回多行

时间:2017-09-14 11:10:22

标签: powershell

我正在学习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

这也返回整个字符串。我究竟做错了什么?我只想看到比赛,而不是其他线路。

2 个答案:

答案 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