只要有在水果名称没有空格,那么你可以用空格分隔符为读取文件为CSV。然后使用Group-Object
和Add-Member
合并它们以动态地添加x个月。例如:
Import-Csv -Path $InSort -Delimiter " " |
#Group all records per fruit
Group-Object Fruit |
#Sort by fruitname
Sort-Object Name |
#Process each group (fruit) to merge the rows
ForEach-Object {
#Create object (row) per fruit
$obj = New-Object -TypeName psobject -Property @{
Fruit = $_.Name
}
#For each record (month), add amount column
$_.Group | ForEach-Object {
#Turn month-value into TitleCase (first letter uppercase)
$month = (Get-Culture).TextInfo.ToTitleCase($_.Month)
#Add amount-column per record (month)
Add-Member -InputObject $obj -MemberType NoteProperty -Name "$($Month)Amount" -Value $_.Amount
}
#Output new objects
$obj
} | Export-CSV -Path newfile.csv -NoTypeInformation -Delimiter " "
输出:
Fruit JanAmount FebAmount
----- --------- ---------
1apple 10 20
2banana 50 95
3blueberry 20 50
4mango 30 80
所以有在原始数据'Fruit'和数值之间没有空间?和行之间多余的空白? – 4c74356b41
这看起来像家庭作业,如果你显示你的代码甚至是尝试它,那就没关系。 – LotPings
代码:get-content $ InSort |排序水果 (这里$ insort是我的输入文件,我排序第1列,即水果) 我们可以采取选项卡或修改它,作为demiliter – PerlBatch