chr*_*mue 1 sorting powershell
我有一个包含十进制数字的数组,如下所示:
赖恩福尔格 ########### 100000.00001 1000000.00001 101000.00001 101010.00001 101020.10001
如果我不带参数对其进行排序,我会得到上面的顺序。我希望第二个数字是最后一个条目。我还尝试按 int 或版本或正则表达式进行排序,但直到现在我还没有找到我期望的方式。
$script:array = $script:array | Sort-Object reihenfolge
$script:array = $script:array | Sort-Object { [regex]::Replace($_.reihenfolge, '\d+', { $args[0].Value.PadLeft(20) }) }
$script:array = $script:array | Sort-Object { $_.reihenfolge -as [version] }
$script:array = $script:array | Sort-Object { $_.reihenfolge -as [int] }
Run Code Online (Sandbox Code Playgroud)
看起来您正在从文本或 csv 文件读取数组。在这种情况下,数字实际上是字符串,而不是数字。为了对数字进行排序,请尝试以下操作:
1) 如果您的数组来自文本文件,包括这些行reihenfolge并###########使用Get-Contentcmdlet:
$array = Get-Content -Path 'D:\blah.txt' | Select-Object -Skip 2 | Sort-Object @{Expression = { [double]$_ }}
$array
Run Code Online (Sandbox Code Playgroud)
2) 如果您的数据来自包含名为 的列的 CSV 文件reihenfolge,请执行以下操作:
$array = (Import-Csv -Path 'D:\blah.txt').reihenfolge | Sort-Object @{Expression = { [double]$_ }}
$array
Run Code Online (Sandbox Code Playgroud)
两者都会返回按如下方式排序的数组:
Run Code Online (Sandbox Code Playgroud)100000.00001 101000.00001 101010.00001 101020.10001 1000000.00001