O método mais rápido que eu consegui pensar é usar o PowerShell
$fullpath = "D:\myFolder\input.csv"
$path = Split-Path $fullpath -parent
$data = Import-CSV -Delimiter "," -Path $fullpath -Header species,latitude,longitude
foreach ($group in $data | Group species){
$data | Where-Object {$_.species -eq $group.name} |
ConvertTo-Csv -NoTypeInformation |
foreach {$_.Replace('"','')} |
Out-File "$path\$($group.name).csv"
}
- Cole o código em um novo arquivo de texto e salve-o como, por exemplo,
MySplitMacro.ps1
- Edite a primeira linha e altere
$fullpath
para o caminho CSV desejado - Clique com o botão direito do mouse no arquivo
.ps1
e clique em Executar com o PowerShell
Tomando seu exemplo inicial como entrada, o script criará 4 novos arquivos CSV no mesmo local que seu arquivo de entrada. Cada CSV conterá um conjunto de entradas quando filtrado pela primeira coluna.
Um arquivo de exemplo resultante
Ajustes
- Altereespécieem
$data|Groupspecies
paradefiniracolunaafiltrar - Altere
-Delimiter","
se o seu arquivo de entrada tiver um delimitador diferente, como guias "'t" ou ponto-e-vírgula ";" - Altere
-Header species,latitude,longitude
para os nomes das colunas. Encomende-o corretamente - Altere
$path\$($group.name).csv
se você precisar de um caminho de saída diferente - Em vez de
-eq $group.name
para filtrar seus resultados, você também pode usar-like *$group.name*
para comparação de curingas ou-match '[A-Z]$group.name'
para RegEx comparação