Я читаю CSV-файл, который разделен пустыми строками. Каждый раздел между пустыми строками, которые я хочу захватить в массиве. Где массив будет что-то вроде следующего.Build hash array в PowerShell
array[section0][row0]
array[section0][row1]
array[section0][row2]
array[section1][row0]
array[section1][row1]
array[section1][row2]
Файл CSV отформатирован аналогично ниже.
this,is,section,one,line,one this,is,section,one,line,two ,,,,,,,,,,,,,,,,,,,,, this,is,section,two,line,one this,is,section,two,line,two this,is,section,two,line,three section,two,with,extra,commas,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, this,is,section,three,line,one this,is,section,three,line,two this,is,section,three,line,three section,three,with,extra,commas,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, this,is,section,four,line,one this,is,section,four,line,two this,is,section,four,line,three section,four,with,extra,commas,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,
Я пытаюсь получить массив в $section[sectionnumber][sectionrownumber]
. Но это неудачно.
Я получаю ошибки говоря «индекс выходит за пределы» или «не может индексировать в нулевой массив».
Уверен, что это связано с инициализацией массива. Я просто не могу заставить это работать.
$file = "filename"
$path = Split-Path $file
$import = Get-Content $file
#find blank rows
$r = 0
$blank = "yes"
$firstblank = "yes"
$sectionnumber = 0
#initialize section array
$section = ,@()
foreach ($row in $import) {
if ($row -ne ",,,,,,,,,,,,,,,,,,,,,") {
#not a blank row
if ($firstblank -eq "yes") {
$blank = "no"
$firstblank = "no"
} elseif($blank -eq "yes") {
$blank = "no"
$r++
} else {}
#initialize array for multidemension
$section[$r][$sectionnumber] = $row
$sectionnumber++
} else {
#this is a blank row
if ($blank = "no") {
$blank = "yes"
$sectionnumber = 0
} else {
$blank = "yes"
$sectionnumber = 0
}
}
}
Write-Host $section
Это полезно, но не что я хотел достичь. Я пытаюсь написать хороший ответ. Но «введите», пытающийся перейти на новую строку, отправляет форму. поэтому я не могу много сделать с этим комментарием, чтобы показать дополнительную информацию. Вы знаете, как сохранить его от автоматического представления этого комментария, когда я нажимаю клавишу ввода? –
Я отправил дополнительную информацию в качестве ответа, потому что я не мог понять, как это сделать в качестве комментария –