我是PowerShell的新手所以非常感谢任何帮助。
我有一个字符串列表(文件名),它们以数字开头,例如。 “1.第一个文件”,“2。第二个文件”......“21。第二十一个文件”。
我希望按照起始编号的顺序对其进行排序。但是,当我执行“$ List | sort {$ _.Name} -Unique”时,它将以“1”开头,然后下一项为“11”。而不是“2”。
请帮忙。
答案 0 :(得分:1)
这是一种方法:
$test = @('1. First', '2. Second', '11. Eleventh')
$sort = @()
foreach($item in $test){
$item -match '^(\d+).*'
$temp = New-Object PSCustomObject -property @{'Number' = [int]$matches[1]}
$sort += $temp
}
$sort | Sort-Object Number | Select-Object Data
答案 1 :(得分:0)
为了简化先前的答案,您可以这样做:
$test | Sort-Object -Property @{ Expression={[int]$_.substring(0,$_.IndexOf('.'))}; Ascending=$true }
答案 2 :(得分:0)
这是另一种选择:
$col = @(
'1. first file'
'2. second file'
'11. eleventh file'
'21. twenty-first file'
)
$ht = @{}
$col | foreach {$ht[$_ -replace '\D+$'] = $_}
[int[]]$ht.keys | sort | foreach {$ht["$_"] }
1. first file
2. second file
11. eleventh file
21. twenty-first file