我有一个将数据输出到文本文件的脚本。现在我需要一种方法来计算与项目匹配的行数并获得计数。我知道如何通过
获得一个值的计数$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
答案 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])"
}