Powershell从文件中提取值
问题描述:
我有一个日志文件,其中包含很多字段。我想从文件中提取字段,但我不想逐行搜索文件。Powershell从文件中提取值
我有我的方式:
$pattern="Hostname \(Alias\):(.+)\(.+Service: (.+)"
这会给我,我需要两个值。我知道如果我有一个字符串,并且我正在寻找一个匹配,我可以使用$ matches数组来查找字段。换句话说,如果我使用字符串变量$ line查看文件中的单个行,则可以使用此代码提取字段。
if($line -matches $pattern){
$var1=$matches[1]
$var2=$matches[2]
}
但是我怎样才能得到这些值,而无需逐行搜索?我想将整个文件作为单个字符串传递,并将提取的值添加到两个不同的数组中。
我正在寻找类似
while($filetext -match $pattern){
$array1+=$matches[1]
$array2+=$matches[2]
}
但这个代码使我处于一个无限循环如果连一个比赛。那么我可以使用nextMatch函数吗?
答
PowerShell 2.0中加入了-AllMatches
参数为Select-String
cmdlet的例如为:
$filetext | Select-String $pattern -AllMatches |
Foreach {$_.Matches | Foreach {$_.Groups[1] | Foreach {$_.Value}}}
由于解决了这个限制,这个伟大的工程。 – StaticMethod 2012-08-14 15:37:15