如何计算一个字符串中包含反斜杠和双反斜杠的字符串中多次出现?

时间:2019-08-20 18:22:12

标签: powershell count

我需要计算包含反斜杠和双反斜杠的字符串在一行中出现的次数。

我尝试使用.Count,但是它仅计算该行中的第一个实例。当我尝试其他命令时,通常会遇到一些有关转义符的错误。

这是文件c:\ work \ test.txt中的一行数据:

Occurrence1\\paul\dfs_app\MyFolder\QA2\testme1  Occurrence2\\paul\dfs_app\MyFolder\QA2\testme2 

这是我的代码:

$inString = "\\paul\dfs_app\MyFolder\QA2"
$file = "C:\work\test.txt"
$check = Get-Content $file | Where-Object { $_.Contains($inString) }
if ($check.Count -gt 0) {
    Write-Host "Found" $check.Count.ToString().PadLeft(2, " ") "occurrences in " $file -ForegroundColor Yellow
}

返回

  

在C:\ work \ test.txt中发现1个出现

但它应该已经发现2次。

1 个答案:

答案 0 :(得分:2)

您可以使用Select-String来统计$inString的出现。

$out = Select-String -Path $file -Pattern ([regex]::Escape($inString)) -AllMatches
$out.Matches.Count
没有-Pattern开关的

-SimpleMatch会将模式转换为正则表达式。使用Escape()方法将自动转义那些反斜杠和任何其他特殊的正则表达式字符。由于它使用的是正则表达式而不是简单的匹配,因此matches属性将包含找到的每个匹配项。结合使用AllMatches参数,它将在每行的第一个匹配项之后继续进行匹配项搜索。