假设我有一个2行多列的sample.csv文件
Account, Id, Date
Jan, Dec, Feb
现在,我想转换这个文件,它由单行组成,并在PowerShell脚本中按列顺序更改为output.csv
Account,Id,Date,Jan,Feb,Dec
我试了很多方法…
Import-Csv 'sample.csv' | Group-Object ID | ForEach-Object { [PsCustomObject]@{ Header = $_.Group.Dept -join ',' } } | Export-Csv 'output.csv' -NoTypeInformation
不必详细讨论您可能遇到的问题,您可以尝试以下方法:
@"
Account, Id, Date
Jan, Dec, Feb
one, two, three
"@ | ConvertFrom-Csv -PipelineVariable "Header" | Select-Object -First 1 |
ForEach-Object -Process {
($_.PSObject.Properties.Value, $Header[0].PSObject.Properties.Name | Write-Output) -join ","
}
进入PSObject
包装器暴露了当管道连接到Get-Member
时未显示的附加属性。我们所追求的主要是列名(.Name
)和第一个行值(.Value
)。Select-Object -First 1
,是为了确保只选择第一行,而不选择任何其他行。因此,我们将两个属性值连接起来,剩下要做的就是导出到一个新的csv文件。