Sorting powershell排序多维数组
我是Powershell的新手,但这让我有点疯狂。我在这里看了各种各样的问题,但找不到答案,所以我来了。道歉,如果这已经涵盖 我有两个包含数字列的文本文件。我想创建一个包含这两列的数组,并按第1列或第2列对其进行排序 如果我们有Sorting powershell排序多维数组,sorting,powershell,Sorting,Powershell,我是Powershell的新手,但这让我有点疯狂。我在这里看了各种各样的问题,但找不到答案,所以我来了。道歉,如果这已经涵盖 我有两个包含数字列的文本文件。我想创建一个包含这两列的数组,并按第1列或第2列对其进行排序 如果我们有 $a=@(1,5,10,15,25) $b=@(100,99,98,99,10) 我们创造 c$=$a,$b 我最初的想法是尝试这样的东西: $c | sort { [int]$_[0] } 但它不起作用。我尝试过很多不同的东西,所以任何建议都将不胜感激 我正在编
$a=@(1,5,10,15,25)
$b=@(100,99,98,99,10)
我们创造
c$=$a,$b
我最初的想法是尝试这样的东西:
$c | sort { [int]$_[0] }
但它不起作用。我尝试过很多不同的东西,所以任何建议都将不胜感激
我正在编辑这篇文章,因为我的问题不太清楚。最后,如果我按第2列升序对$c进行排序,我希望得到如下结果:
25,10
10,98
5,99
15,99
1,100
你知道如何做到这一点吗?欢迎来到powershell world。语法与经典编程语言略有不同,通常cmdlet从当前管道获取输入。在本例中,您所讨论的命令是
排序对象
,您可以在包含数组内容的管道内容中直接使用它
$c = ($a | Sort-Object), ($b | Sort-Object)
我不确定你们是如何声明你们的维度数组的,因为它就像你们希望它被声明成这样或类似的东西
$c = @(@(1,100),@(5,99),@(10,98),@(15,99),@(25,10))
如果它处于那种状态,那么排序就轻而易举了
$c | Sort-Object @{Expression={$_[1]}; Ascending=$True} | %{
"$($_[0]),$($_[1])"
}
排序对象
适用于一维数组。当涉及多个属性时,您需要指定对哪个属性进行排序以获得预期的输出。由于没有,我们使用计算表达式在第二个“列”的基础上生成
样本输出
25,10
10,98
5,99
15,99
1,100
如果你真的想这样处理你的数组,我们需要一个中间步骤来转换你所拥有的,如何按照你期望的方式进行排序
$a=@(1,5,10,15,25)
$b=@(100,99,98,99,10)
$c = @()
for($i = 0;$i -lt $a.Count; $i++){
$c += ,@($a[$i],$b[$i])
}
运行此代码后,
$c
将与我的排序一样工作 非常感谢你的回复。我编辑了我的问题,因为我需要按第2列对第1列进行排序。这些数组的声明方式是否与您当前的方式相同?现在是一种横向关系,而不是你所期望的纵向关系。听起来好像你认为数组的声明是这样的$c=@(@(1100),@(5,99),@(10,98),@(15,99),@(25,10)),或者至少这样处理会更容易,或者如果没有其他东西可以将它转换成那样。非常感谢你的帮助。我认为没有必要进行这种转换,因此我的问题是。@Octave你明白/还有其他问题吗?或者这是令人满意的。可以使用不同的数组,但正如我所说的,您的输入似乎与所需的输出不匹配。我认为这很好。再次感谢。