PowerShell Core 区分大小写排序结果不符合预期问题咨询
PowerShell区分大小写排序不符合预期的解决方案
问题根因
PowerShell的Sort-Object(简称Sort)默认采用当前系统区域对应的文化敏感排序规则,即便开启-CaseSensitive参数,也不会默认使用ASCII/Unicode码点的序数排序逻辑。你所处的系统文化排序规则中,同字母的小写字符优先级高于大写字符,因此出现了小写b开头的文件排在大写B开头文件前面的结果。
修复方案
追加-ComparisonType Ordinal参数指定使用序数比较规则,该规则严格按照字符的Unicode码点(ASCII字符对应ASCII值)排序,完全符合你需要的字典序逻辑。
执行命令:
("BjFuHnTV.txt","bALAahas.txt") | Sort -CaseSensitive -ComparisonType Ordinal
输出结果:
BjFuHnTV.txt bALAahas.txt
参数说明
-CaseSensitive:开启大小写敏感校验-ComparisonType Ordinal:指定比较逻辑为非文化相关的序数比较,不受系统区域设置影响,排序结果和Python、Bash默认的字符串排序逻辑一致。你使用的PowerShell 7.0.6 LTS版本原生支持该参数,无需额外适配。
内容的提问来源于stack exchange,提问作者Krish
相关产品推荐
相关产品推荐

