拜托,我需要帮助才能在 PowerShell 中使用数组执行此操作。 我有一个类似于下面 $a 的数组:
$a = @('**ABC**:XYZ','**LMN**:PQR','**ABC**:RST','YJQ:PRS','**LMN**:SDK')
我想将 $a
数组更改为 $b
:
$b = @('**ABC**:XYZ,RST','**LMN**:PQR,SDK','YJQ:PRS')
想法是,所有在“:”之前具有公共(public)值的项目都应该以类似“common_value:x,y,z”的格式组合,但其他没有公共(public)值的项目应该单独保留。任何提示或解决方案将不胜感激。
最佳答案
一个简单粗暴的例子:
$a = @('**ABC**:XYZ','**LMN**:PQR','**ABC**:RST','YJQ:PRS','**LMN**:SDK')
$b=
$a |
Select-ObJect @{Name = 'Name'; Expression = { $_.Split(':')[0] }},
@{Name = 'Group'; Expression = { $_.Split(':')[1] }} |
Group-Object -Property Name |
ForEach-Object{ "'$($_.Name):$($_.Group.Group -join ',')'"}
$b = $b -join ','
$b
输出:
'**ABC**:XYZ,RST','**LMN**:PQR,SDK','YJQ:PRS'
这也有效:
$a = @('**ABC**:XYZ','**LMN**:PQR','**ABC**:RST','YJQ:PRS','**LMN**:SDK')
$b =
$a | Group-Object {$_.Split(':')[0]} |
ForEach-Object{
"'$($_.Name):$(($_.Group.Split(':') | Group-Object { $Global:i % 2; $Global:i++ })[1].Group -join ',')'"
}
$b = $b -join ','
$b
关于powershell - 使用 Powershell 在同一数组中重新组合常见项目值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65744227/