Как добавить данные в последний столбец CSV с помощью PowerShell? - PullRequest
0 голосов
/ 15 января 2019

У меня есть требование добавить данные в последний столбец файла CSV. Тестовый файл у меня выглядит так:

NAME,AGE,OFFICE,DEPT,SKILL
jack,24,IBM,Retail
tom,32,MS,BFSI
SAM,44,MGR,Test

Мне удалось проанализировать CSV, но затем добавить данные в последний столбец "НАВЫК" сложно. Требуется добавить слово «Java» в последний столбец каждой строки

NAME,AGE,OFFICE,DEPT,SKILL
jack,24,IBM,Retail,Java
tom,32,MS,BFSI,Java
SAM,44,MGR,Test,Java

Обратите внимание, что значение, добавленное к последнему столбцу, остается одинаковым для всех строк.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы можете изменить значение SKILL свойства импортируемых объектов и экспортировать в файл CSV следующим образом:

Import-Csv test.txt |
    ForEach-Object {$_.SKILL = "Java"; $_} |
    Export-Csv test_out.txt -NoTypeInformation

Однако Export-Csv добавляет кавычки вокруг значений, поэтому test_out.txt будет выглядеть так:

"NAME","AGE","OFFICE","DEPT","SKILL"
"jack","24","IBM","Retail","Java"
"tom","32","MS","BFSI","Java"
"SAM","44","MGR","Test","Java"

Может быть, вам следует просто добавить ",Java "в конец каждой строки, начиная со второй строки:

Get-Content test.txt |
    ForEach-Object { if($_.ReadCount -gt 1) { "$($_),Java" } else { $_ } } |
    Out-File test_out.txt
0 голосов
/ 15 января 2019

Вы можете просто создать объект, который содержит текущие csv-данные, и расширить этот объект строкой Java примерно так:

$results = @() # Empty array to store new created rows in
$csv = Import-Csv "$PSScriptRoot\csvfile.csv"
foreach ($row in $csv) {
    $properties = [ordered]@{
        NAME   = $row.NAME
        AGE    = $row.AGE
        OFFICE = $row.OFFICE
        DEPT   = $row.DEPT
        SKILL  = "Java"
    }
    # insert the new row as an object into the results-array
    $results += New-Object psobject -Property $properties
}
# foreach-loop filled the results-array - export it as a CSV-file
$results | Export-Csv "new-file.csv" -NoTypeInformation
...