Как добавить числа в столбцы в PowerShell? - PullRequest
0 голосов
/ 13 декабря 2018

В моем файле .csv у меня есть четыре столбца чисел, определенных следующим образом:
aIN = $item1.IN
aOUT = $item1.OUT
bIN = $item2.IN
bOUT = $item2.OUT

сами числа представляют собой смесь целых и десятичных чисел.Я пытаюсь найти столбец total-IN и столбец total-OUT, используя следующее:
total-IN = aIN + bIN
total-OUT = aOUT + bOUT

Допустим, у меня есть ...
aIN aOUT bIN bOUT
0.1 0.2 0.3 0.4
1 2 3 4
0.5 0.6 0.7 0.8
5 6 7 8

Что я хотел бы ...
aIN aOUT bIN bOUT total-IN total-OUT
0.1 0.2 0.3 0.4 0.4 0.6
1 2 3 4 4 6
0.5 0.6 0.7 0.8 1.2 1.4
5 6 7 8 12 14

Мой метод не работает.Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 13 декабря 2018

Использование

  • a Select-Object для добавления итоговых столбцов
  • итерация по источнику с помощью ForEach
  • и приведение к двойному

$CsvData = Import-Csv '.\testfile.csv' | Select-Object *,'total-IN','total-OUT'

ForEach ($Row in $CsvData) {
   $Row.'total-IN'  = [double]$Row.aIN  + $Row.bIN
   $Row.'total-OUT' = [double]$Row.aOUT + $Row.bOUT
}

$CsvData | Format-Table -AutoSize
$CsvData | Export-Csv .\your.csv -NoTypeInformation

Вы также можете сделать с calculated property

$CsvData = @"
aIN,aOUT,bIN,bOUT
0.1,0.2,0.3,0.4
1,2,3,4
0.5,0.6,0.7,0.8
5,6,7,8
"@ | ConvertFrom-Csv | Select-Object *,
    @{n='total-IN';e={[double]$_.aIN  + $_.bIN}},
    @{n='total-OUT';e={[double]$_.aOUT  + $_.bOUT}}

$CsvData | Format-Table -AutoSize
$CsvData | Export-Csv .\your.csv -NoTypeInformation
...