Powershell 分解CSV文件

Powershell 分解CSV文件,powershell,csv,Powershell,Csv,因此,我正在考虑使用Powershell分解CSV。CSV被|删除了,这不是问题,我希望在保留原始CSV的同时将其分解为多个较小的CSV。中断将基于包含值列表之一的单个列中的值发生。 到目前为止,我所做的是导入以|分隔的csv,然后 foreach($line in $csv) { if($columnValue -like $target1) { export-csv filename1.csv -Delimiter `| $line -append)} elseif($colum

因此,我正在考虑使用Powershell分解CSV。CSV被|删除了,这不是问题,我希望在保留原始CSV的同时将其分解为多个较小的CSV。中断将基于包含值列表之一的单个列中的值发生。 到目前为止,我所做的是导入以|分隔的csv,然后

foreach($line in $csv)  {  
if($columnValue -like $target1) {  
export-csv filename1.csv -Delimiter `| $line -append)} 
elseif($columnValue -like $target2) { 
export-csv filename2.csv -Delimiter `| $line -append)}  
等等

然而,我不认为它是正确的导出,我不希望有引号,是的,我知道这是标准的,但我不希望他们也我希望从原始csv的头被应用到子csv和它不被应用


很抱歉,如果这里有更好的方法来格式化仍然是新的代码,这里是我建议使用Switch cmdlet的地方。它将某些内容与多个可能的匹配进行比较,并在适当的地方执行这些匹配

Switch($csv){
    {$_.column -match $target1} {$_ | Export-CSV filename1.csv -append -delimiter '|'}
    {$_.column -match $target2} {$_ | Export-CSV filename2.csv -append -delimiter '|'}
    {$_.column -match $target3} {$_ | Export-CSV filename3.csv -append -delimiter '|'}
}

谢谢作为powershell的新手,我不知道Java中有这样的交换机。有没有什么有效的方法可以去掉每个字段的引号?不是很好。如果你这样做,事情会变得复杂得多。你要么在最后加载文件并替换“,”为“,”,要么使用convertto csv,pipe to out字符串,我认为,也许可以跳过该位,在ForEach循环中替换相同的内容,然后使用pipe to out file-append。
$data = import-csv $csvfile
$data | ?{$_.val -eq $criteria1} | export-csv -path "File1.csv"
$data | ?{$_.val -eq $criteria2} | export-csv -path "File2.csv"