在PowerShell的CSV中添加重复值
我正试图在PowerShell中这样做。我有一个CSV文件,看起来如下所示(注意…表示任意数量的值): 我想将每个人的所有值加在一起,以便输出以下内容:在PowerShell的CSV中添加重复值,powershell,Powershell,我正试图在PowerShell中这样做。我有一个CSV文件,看起来如下所示(注意…表示任意数量的值): 我想将每个人的所有值加在一起,以便输出以下内容: Name,...,Value Adam,...,5 Bob,...,7 Chris,...,9 我正在使用Group对象获取哈希表 $table = Import-CSV "c:\input-file" | Group-Object -Property Name -AsHashTable -AsString 但我不知道如
Name,...,Value
Adam,...,5
Bob,...,7
Chris,...,9
我正在使用Group对象获取哈希表
$table = Import-CSV "c:\input-file" | Group-Object -Property Name -AsHashTable -AsString
但我不知道如何继续添加值,然后输出到CSV。有人能帮忙吗?或者有人有其他的解决方案吗?很难猜出
…
代表什么;从字面上看:
$csvIn = @'
Name,...,Value
Adam,...,1
Bob,...,2
Chris,...,3
Adam,...,4
Bob,...,5
Chris,...,6
'@ | ConvertFrom-Csv -Delimiter ',' # instead of `Import-CSV`
$csvOu = [System.Collections.ArrayList]::new()
$csvGr = $csvIn | Group-Object -Property Name
$csvGr | ForEach-Object {
[void]$csvOu.Add(
[pscustomobject]@{
Name = $_.Name
'...' = '...'
Value = $_.Group |
Measure-Object -Property Value -Sum |
Select-Object -ExpandProperty Sum
}
)
}
$csvOu #| ConvertTo-Csv -Delimiter ',' -NoTypeInformation
输出:\SO\64316986.ps1
Name ... Value
---- --- -----
Adam ... 5
Bob ... 7
Chris ... 9
只需组合
组对象
、选择对象
和测量对象
cmdlet即可获得所需:
Import-Csv -Path "c:\input-file" | Group-Object Name |
Select-Object Name,
@{Name = '...'; Expression = {($_.Group.'...')[0]}},
@{Name = 'Value'; Expression = { ($_.Group | Measure-Object Value -Sum).Sum }}
输出:
Name ... Value
---- --- -----
Adam ... 5
Bob ... 7
Chris ... 9
另外,在您的示例
Chris,….3,
中,逗号应该是在Chris,….3
之前,使用此cmdlet(另请参见:):$Csv | Merge$Add-On-Name,'…'-Property*,@{Value={$Left.Value+$Right.Value}
。。。指任意数量的项目。对不起,这更像是一个数学术语,而不是编程术语。啊,是的,很好地理解了逗号。现在改正了,谢谢@太棒了!您可能不知道这一点,但习惯于单击✓ 左边的图标。这将帮助其他有类似问题的人更容易找到它,并有助于激励人们回答你的问题。是的,我知道。我必须先测试它;)
Name ... Value
---- --- -----
Adam ... 5
Bob ... 7
Chris ... 9