我有很多文本输出来自我想在Powershell 2.0中解析的工具。输出格式很好,所以我可以构造一个正则表达式来使用select-string提取我想要的数据。然而,从select-string中获取后续匹配似乎是冗长的。必须有一个更短的方式?
这有效:
p4 users | select-string "^\w+(.\w+)?" |
select -Expand Matches | %{p4 changes -u $_.Value}
但所有这些匹配和价值观都很冗长。 select-string帮助文件中没有任何明显的东西,但有没有办法让它只将正则表达式匹配作为字符串输出?有点像:
p4 users | select-string "^\w(.\w+)?" -ImaginaryMagicOption | %{p4 changes -u $_}
答案 0 :(得分:2)
在这种情况下,使用-match
例如:
p4 users | Foreach {if ($_ -match '^\w+(.\w+)?') { p4 changes -u $matches[0] }}
这只是因为Select-String的输出是MatchInfo对象,它将Matches信息隐藏了一级。 OTOH它可以工作:
p4 users | Select-String "^\w+(.\w+)?" |
Foreach {p4 changes -u $_.Matches[0].Value}