如何在PowerShell中基于冒号分隔的第4个子串对数组排序?
PowerShell按指定子串排序CPE数组
直接用PowerShell的Sort-Object结合字符串分割就能实现需求,因为冒号分隔的第4个子串对应分割后数组的索引3(PowerShell数组索引从0开始),具体实现如下:
基础实现
# 定义待排序的CPE数组 $cpeArray = @( 'cpe:2.3:o:juniper:junos', 'cpe:2.3:h:hp', 'cpe:2.3:a:microsoft:sql_server' ) # 按冒号分割后的第4个子串进行字母排序 $sortedArray = $cpeArray | Sort-Object { ($_ -split ':')[3] } # 输出排序结果 $sortedArray
执行后会输出排序后的数组:
cpe:2.3:h:hp
cpe:2.3:o:juniper:junos
cpe:2.3:a:microsoft:sql_server
健壮性优化
如果数组中存在格式不规范的CPE字符串(比如分割后不足4段),可以添加判断避免报错:
$sortedArray = $cpeArray | Sort-Object { $splitParts = $_ -split ':' # 仅当分割后至少有4段时取第4个元素,否则用空字符串兜底 $splitParts.Count -ge 4 ? $splitParts[3] : '' }
内容的提问来源于stack exchange,提问作者aidenmitchell
相关产品推荐
相关产品推荐

