Uladz
@Uladz
Did I told yа a story 'bout finger n' blender?

Как разделить CSV файл на два по количеству элементов в строке?

Привет!
Есть .CSV файл, содержащий имена, имена пользователей и группы. Мне требуется разделить этот файл на два других по количеству групп: в одном файле -- пользователи с одной группой, во втором -- с несколькими группами.

.CSV файл имеет следующий вид:

Name UserName Group
Bob Bob.B Legion
Jake Jake NCR
Kayne Kayne.S Neuntral,Brotherhood
Stacy Stacy.H Bombers
Alan Alen Trader,NCR
Sten Sten.P Neutral
Peter Peter.K Farmer,NCR

Думаю, нужно использовать ForEach петлю, но я не знаю как выцепить единичные и множественные значения из третьей колонки, где обозначены группы.
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
Типа того
$data=Import-csv src
$data | where-object { $_.Group -match ',' } | export-csv dstg2
$data | where-object { $_.Group -notmatch ','  } | export-csv dstg1

Пути, разделители, кодировка - свои
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
Например так:
$file = "./data.csv"
$singleFactionFile = "./single.csv"
$manyFactionsFile = "./many.csv"

$content = $file | Get-Content
$lines = $content.Split("`n")
$header = $lines[0]
$data = $lines | Select-Object -Skip 1
Add-Content -Path $singleFactionFile -Path $manyFactionsFile -Value $header 

foreach ($line in $data) {
    $fields = $line.Split(' ')
    $factions = $fields[2].Split(',')
    if ($factions.Count -eq 1) {
        Add-Content -Path $singleFactionFile -Value $line
    }
    else {
        Add-Content -Path $manyFactionsFile -Value $line
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы