Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: [решено] Поиск в csv файле
Показать сообщение отдельно

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Iska, венгерская нотация в PowerShell? Переутомление? Да и лучше сделать так (PowerShell v6):
Код: Выделить весь код
$csv, $txt = (Import-Csv .\input.csv -Delimiter ','), (Get-Content .\input.txt)
$txt.ForEach{
  .({ $csv += [PSCustomObject]@{samaccountname = $_; count = 1} },{
    ++[Int32]$csv[$csv.samaccountname.IndexOf($_)].count
  })[[Byte]($_ -in $csv.samaccountname)]
}
($csv | ConvertTo-Csv) -replace '"' | Out-File .\input.csv
Результат теста производительности:
Код: Выделить весь код
time {
  $csv, $txt = (Import-Csv .\input.csv -Delimiter ','), (Get-Content .\input.txt)
  $txt.ForEach{
    .({ $csv += [PSCustomObject]@{samaccountname = $_; count = 1} },{
      ++[Int32]$csv[$csv.samaccountname.IndexOf($_)].count
    })[[Byte]($_ -in $csv.samaccountname)]
  }
  ($csv | ConvertTo-Csv) -replace '"' | Out-File .\input.csv
}, {
  $sTxtFile    = '.\input1.txt'
  $sCSVFile    = '.\input1.csv'

  $sTxtContent = Get-Content -Path $sTxtFile
  $sCSVContent = Import-Csv  -Path $sCSVFile

  $sTxtContent | ForEach-Object -Process {
      $oCSVObject = $sCSVContent | Where-Object -Property 'samaccountname' -eq -Value $_
          if($oCSVObject) {
              $oCSVObject.count = [System.String]([System.Int32]($oCSVObject.count) + 1)
          } else {
              $sCSVContent += [PSCustomObject]@{samaccountname = $_; count = '1'}
          }
  }

  $sCSVContent | ConvertTo-Csv -NoTypeInformation | ForEach-Object -Process {
      $_.Replace('"','')
  } | Set-Content -Path $sCSVFile -Force
}

# итог:
Total ms: 37.7992
Total ms: 108.8279
Как говорится, почувствуйте разницу.

Отправлено: 21:27, 23-12-2019 | #4

Название темы: [решено] Поиск в csv файле