Создайте несколько файлов из одного CSV, по одному файлу из каждого значения в столбце [Powershell] - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в PowerShell, и у меня есть проблема с выяснением того, как создать из одного или нескольких файлов .csv, по одному файлу для каждого значения, находящегося в столбце, со всеми строками, содержащимися в этом значении.

Позвольте мне объяснить на примере:

У меня есть этот источник CSV:

Source Table

Мне нужно создать файл для каждого приложения в файле. вывод сценария должен выглядеть примерно так:

App1.csv

App1.csv

App2.CSV

App2.CSV

Это для каждого приложения, которое появляется в Original CSV, новый файл со всеми строками, имеющими такое значение, в данном случае App.

Я хочу чтобы сделать это в PowerShell, чтобы можно было автоматизировать, я пытаюсь с Group-object, а затем foreach со значениями, без везения. Я даже близко не нашел решение.

Заранее спасибо и счастливого кодирования!

Ответы [ 2 ]

1 голос
/ 06 марта 2020

У меня нет самого элегантного решения, но оно работает, я проверил его на ваших файлах, но я прошу вас в следующий раз загрузить содержимое файла в виде текста, чтобы его было легче скопировать. И не забудьте выбрать разделитель в коде (я обычно использую ';')

$some=Import-Csv "D:\testdir\file1.csv" -Delimiter ';'|
        Sort-Object header2|
          Group-Object -Property header2

foreach ($i in $some){
  $i.Group| 
    Export-Csv -Delimiter ';' -Encoding UTF8 -NoTypeInformation -Force -Path ("D:\testdir\"+$i.Name+".csv")
}
0 голосов
/ 06 марта 2020

Импорт CSV.

Выберите все уникальные значения из столбца, который содержит имя приложения.

L oop через имена приложений и получите все строки, где имя приложения совпадает .

Экспорт в CSV.

$Path = "./MyFile.csv"
$DestinationDir = "./"
$CSV = Import-CSV -Path $Path

$AppNames = $CSV.H2 | Select -Unique

Foreach ($App in $AppNames)
{
    $DestinationPath = Join-Path -ChildPath $App -Path $DestinationDir 
    $CSV | Where {$_.H2 -eq $APP} | Export-Csv -NoTypeInformation -Path $DestinationPath
}

Пример CSV:

H1,H2,H3,H4
Data,App1,Data,Data
Data,App1,Data,Data
Data,App1,Data,Data
Data,App2,Data,Data
Data,App2,Data,Data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...