Powershell 将CSV文件拆分为两列
从500000行CSV开始,我需要按天和小时分割文件(第二列和第三列)。我已尝试修改组以包括小时,虽然我看到小时被添加到我的文件名中,但在导出的文件中没有得到任何结果 从事这项工作的教师:Powershell 将CSV文件拆分为两列,powershell,csv,Powershell,Csv,从500000行CSV开始,我需要按天和小时分割文件(第二列和第三列)。我已尝试修改组以包括小时,虽然我看到小时被添加到我的文件名中,但在导出的文件中没有得到任何结果 从事这项工作的教师: foreach ($group in $data | Group Day,hour) { $data | Where-Object { $_.Day -and $_.Hour -eq $group.Name } ConvertTo-Csv -NoTypeInformation | forea
foreach ($group in $data | Group Day,hour) {
$data | Where-Object { $_.Day -and $_.Hour -eq $group.Name }
ConvertTo-Csv -NoTypeInformation |
foreach {$_.Replace('"','')} |
Out-File "$Path\Testfile_$($group.name -replace $regexA, '').csv"
样本数据:
Bob,1/27/2012,8:00,Basic,Operations
Charlie,2/3/2012,9:00,Advanced,Production
Bill,3/7/2012,10:00,Advanced,Production
鲍勃,2012年1月27日,8:00,基础,操作
Charlie,2012年2月3日,9:00,高级,生产
比尔,2012年3月7日,10:00,高级,生产您可以导入CSV,动态确定输出文件名,并将每条记录附加到匹配文件中:
Import-Csv 'C:\path\to\input.csv' | ForEach-Object {
$filename = ('output_{0}_{1}.csv' -f $_.Day, $_.Hour) -replace '[/:]'
$_ | Export-Csv "C:\path\to\$filename" -Append -NoType
}
请注意,
Export Csv-Append
需要PowerShell v3或更高版本。$data |其中对象{$\uu0.Day-和$\u0.Hour-eq$group.Name}
->$\u0.group
包含组中的所有内容,无需重新扫描所有500000内容以再次尝试组成组$\uu0.Day-和$\u0.Hour
没有按您的想法执行,这是一个布尔运算符,返回的$True
永远不会与组名匹配。谢谢,当我可以重新启动以在早期版本上安装PSV3时,我将尝试此方法。您可以使用类似于$\u124; ConvertTo Csv-NoType | Select Object-Skip 1 | Add Content
的方法。不那么优雅(你会失去标题),但应该有用。谢谢,我已经将此标记为答案,因为它正是我需要做的。