【发布时间】:2018-10-01 08:06:50
【问题描述】:
我有两个 CSV 文件。 TeamCSV 和 TeamDetailsCSV。请参阅下面的格式。
我想通过使用 TeamCSV(Team, Name, NUMber, Color) 作为基础并在 TeamDetailsCSV(形状和代码)中进行一些查找来输出第三个 CSV(下面的所需输出)。
但是,团队 A 和团队 E 组合成一个数组(请参阅下面的 BadOutputCSV)。我想按照 DesiredOutputCSV 中的描述逐行导出第三个CSV。我在下面发布了我的代码。
感谢您对此的任何帮助。这几天一直在头疼。非常感谢大家。
PS C:\temp1> $TeamCSV
Team Name Number Color
---- ---- ------ -----
Team A John 1 Blue
Team A Mary 2 Blue
Team A James 5 Red
Team B Mark 5 Red
Team C Joey 3 Green
Team D Amy 3 Green
Team E Rose 4 Green
Team E Janet 2 Red
PS C:\temp1> $TeamDetailCSV
Team Shape Code
---- ----- ----
Team A Circle TC01
Team B Square TC01
Team C Triangle TC01
Team D Hexagon TC02
Team E Pentagon TC03
PS C:\temp1> $DesiredOutput | ft
Team Name Number Color Shape Code
---- ---- ------ ----- ----- ----
Team A John 1 Blue Circle TC01
Team A Mary 2 Blue Circle TC01
Team A James 5 Red Circle TC01
Team B Mark 5 Red Square TC01
Team C Joey 3 Green Triangle TC01
Team D Amy 3 Green Hexagon TC02
Team E Rose 4 Green Pentagon TC03
Team E Janet 2 Red Pentagon TC03
PS C:\temp1> $BadOutput | ft
Team Name Number Color Shape Code
---- ---- ------ ----- ----- ----
System.Object[] System.Object[] System.Object[] System.Object[] Circle TC01
Team B Mark 5 Red Square TC01
Team C Joey 3 Green Triangle TC01
Team D Amy 3 Green Hexagon TC02
System.Object[] System.Object[] System.Object[] System.Object[] Pentagon TC03
这是我的代码
$TeamCSV = Import-Csv .\Team-conv.csv
$TeamDetailCSV = Import-Csv .\TeamDetail-conv.csv
$TeaminBoth = Compare-Object -ReferenceObject $TeamCSV.Team -DifferenceObject $TeamDetailCSV.team -IncludeEqual | #Posh v3
Where-Object {$_.SideIndicator -eq "=="} |
Select-Object -ExpandProperty InputObject
$OutputCSV = ForEach($Team in $TeaminBoth) {
$columnTeamCSV = $TeaminBoth | Where-Object {$_.Team -eq $Team}
$columnTeamDetailCSV = $TeaminBoth | Where-Object {$_.Team -eq $Team}
[PSCustomObject][Ordered] @{
Team = $columnTeamCSV.Team
Name = $columnTeamCSV.Name
Number = $columnTeamCSV.Number
Color = $columnTeamCSV.Color
Shape = $columnTeamDetailCSV.Shape
Code = $columnTeamDetailCSV.Code
}
$OutputCSV | Export-CSV -NoTypeInformation -Path $xlsxPath\teamdetails.csv
【问题讨论】:
标签: arrays powershell csv hashtable