【问题标题】:Powershell extract values from filePowershell从文件中提取值
【发布时间】:2012-08-09 10:49:46
【问题描述】:

我有一个日志文件,其中列出了很多字段。我想从文件中提取字段,但我不想逐行搜索文件。

我有我的模式:

$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


    【解决方案1】:

    PowerShell 2.0 通过将 -AllMatches 参数添加到 Select-String cmdlet 来解决此限制,例如:

    $filetext | Select-String $pattern -AllMatches | 
        Foreach {$_.Matches | Foreach {$_.Groups[1] | Foreach {$_.Value}}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 2022-10-23
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多