使用 PowerShell 在匹配字符串上添加值并输出到新文件

Using PowerShell to add values on matching string and output to a new file

我有一个包含 3 列的平面文件 日期、页数和页数。

每个页面都有该页面的 2 个版本。安全页面和非安全版本(nlbwc)

我希望能够获取文件中的所有条目 添加页数 对于该特定日期,并输出具有通用页面名称的文件

例如, 以下数据

2021-12-06 00:00:00,secure/WebPage1,1806

2021-12-13 00:00:00,secure/WebPage1,1563

2021-12-06 00:00:00,nlbwc/WebPage1,938

2021-12-13 00:00:00,nlbwc/WebPage1,894

2021-12-06 00:00:00,secure/WebPage2,1533

2021-12-13 00:00:00,secure/WebPage2,1351

2021-12-06 00:00:00,nlbwc/WebPage2,450

2021-12-13 00:00:00,nlbwc/WebPage2,360

会产生

2021-12-06 00:00:00,WebPage1,2744 (1806+938)

2021-12-13 00:00:00,WebPage1,2457 (1563+894)

2021-12-06 00:00:00,WebPage2,2744 (1533+450)

2021-12-13 00:00:00,WebPage2,2457 (1351+360)

(根据日期将 secure 和 nlbwc 的 2 个单独值相加)

此输出将转储到 csv

完成此任务的最佳方法是什么?

最诚挚的问候

假设您的数据文件如下所示:

Date,Page,Page Count
2021-12-06 00:00:00,secure/WebPage1,1806
2021-12-13 00:00:00,secure/WebPage1,1563
2021-12-06 00:00:00,nlbwc/WebPage1,938
2021-12-13 00:00:00,nlbwc/WebPage1,894
2021-12-06 00:00:00,secure/WebPage2,1533
2021-12-13 00:00:00,secure/WebPage2,1351
2021-12-06 00:00:00,nlbwc/WebPage2,450
2021-12-13 00:00:00,nlbwc/WebPage2,360

为此你需要使用 Group-Object 两次并循环:

# if the data does not have headers, provide them with parameter 
#  -Header 'Date','Page','Page Count'
$result = Import-Csv -Path 'D:\Test\data.csv' | Group-Object {($_.Page -split '/')[1]} | ForEach-Object {
    $pageName = $_.Name
    foreach ($pageGroup in ($_.Group | Group-Object Date )) {
        [PsCustomObject]@{
            'Date'       = $pageGroup.Name
            'Page'       = $pageName
            'Page Count' = ($pageGroup.Group | Measure-Object 'Page Count' -Sum).Sum
        }
    }
}

# show on screen
$result | Format-Table -AutoSize

# save to new csv file
$result | Export-Csv -Path 'D:\Test\totals.csv' -NoTypeInformation

屏幕上的结果:

Date                Page     Page Count
----                ----     ----------
2021-12-06 00:00:00 WebPage1       2744
2021-12-13 00:00:00 WebPage1       2457
2021-12-06 00:00:00 WebPage2       1983
2021-12-13 00:00:00 WebPage2       1711

P.S>=。关于总页数

,您在所需输出中出错