Найти значение предыдущей ячейки в csv

#powershell

#powershell

Вопрос:

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

 startDate  endDate     Name
20-03-2019 30-03-2019  marchLogs
01-03-2019 15-03-2019  aprilLogs
  

 $dt = Get-Date
Import-CSV filepath.csv
foreach($item in $csv)
{
$Start = $($item.StartDate)
$End = $($item.EndDate)
if($dt -gt $Start -and $dt -lt $End )
{
$finalName = $($item.Name)
# $previousName 
}
}
  

В приведенном выше коде у меня будет $final значение name как aprilLogs , теперь мне нужно предыдущее имя marchLogs в новом значении $previousName .

Ответ №1:

Существует несколько способов:

  • Получить доступ к данным csv по индексу, при выполнении условия использовать предыдущий индекс
  • используя ваш forach и сохраняя предыдущую запись, если выполнено условие …

Или:

 $finalName = (Import-CSV filepath.csv | 
 Where {[datetime]::parseexact($_.EndDate,"dd-MM-yyyy",[CultureInfo]::InvariantCulture) -lt (Get-Date)} | 
  Sort {[datetime]::parseexact($_.EndDate,"dd-MM-yyyy",[CultureInfo]::InvariantCulture)} | Select -Last 1).Name
  

Ответ №2:

 $dt = Get-Date
$csv = Import-Csv "filepath.csv"
foreach($item in $csv)
{
    $Start = $($item.StartDate)
    $End = $($item.EndDate)
    if($dt -gt $Start -and $dt -lt $End )
    {
        $index = $csv.Indexof($item)
        $previous = $csv[$index-1]
    }
}
$previous.Name