动态循环文本文件并获得常见匹配

时间:2017-11-03 01:06:42

标签: powershell export-to-csv

我有一个将数据输出到文本文件的脚本。现在我需要一种方法来计算与项目匹配的行数并获得计数。我知道如何通过

获得一个值的计数
$ProjectMatches = Select-String -InputObject $FileContent -Pattern "PROJECT ID FOAH834" -AllMatches

但我需要循环遍历文本文件并获取每个PROJECT ID SOMEPROJECTNUMBER的计数并获取每个的计数并将这些结果导出到csv文件。我的目标是显示每个项目的时间。每个条目都是15分钟的时间。

11/2/2017 8:07:34 PM
This 15 minutes is dedicated to PROJECT ID FOAH834
11/2/2017 8:07:36 PM
This 15 minutes is dedicated to PROJECT ID FOAH834
11/2/2017 8:07:38 PM
This 15 minutes is dedicated to PROJECT ID FOAH841
11/2/2017 8:10:15 PM
This 15 minutes is dedicated to PROJECT ID FOAH18
11/2/2017 8:10:17 PM
This 15 minutes is dedicated to PROJECT ID FOAH690
11/2/2017 8:10:21 PM
This 15 minutes is dedicated to PROJECT ID PRJ0036909
11/2/2017 8:19:32 PM
This 15 minutes is dedicated to PROJECT ID FOAH18
11/2/2017 8:21:02 PM

1 个答案:

答案 0 :(得分:1)

您可能希望进行一些正则表达式匹配然后进行字符串操作,而不是硬编码所有值

我会使用像

这样的东西
$matches = [regex]:matches($FileContent,"PROJECT ID .*<br/>")

获取所有项目代码。然后循环遍历它,执行一些字符串操作并将其插入哈希表

$hashtable = @{}
foreach ($entry in $matches){
    $entry = $entry.replace(...)
    $projectcode = $entry.split(....)
    $hashtable[$projectcode] += 1
}

然后您可以使用类似

的方式处理哈希表
foreach($entry in $hashtable.keys){
    write-output "$entry: $($hashtable[$entry])"
}