如何用PowerShell批量处理文件字符串生成嵌套分组格式
PowerShell实现多字符串嵌套分组格式转换
核心思路
先从文件读取所有目标字符串,按拆分后的层级(环境标识 -> 类型段 -> 数字段)做分组,再从内层到外层拼接成要求的嵌套格式。
具体实现代码
# 1. 读取目标文件(每行一个待处理字符串) $inputLines = Get-Content -Path "你的输入文件路径.txt" # 2. 构建嵌套分组结构,自动去重重复项 $groupStructure = @{} foreach ($line in $inputLines) { # 拆分字符串,截取前3段忽略末尾的"-x" $segments = $line -split '-' | Select-Object -First 3 if ($segments.Count -ne 3) { continue } # 跳过格式错误的行 $env = $segments[0] $type = $segments[1] $num = $segments[2] # 初始化层级容器 if (-not $groupStructure.ContainsKey($env)) { $groupStructure[$env] = @{} } if (-not $groupStructure[$env].ContainsKey($type)) { $groupStructure[$env][$type] = [System.Collections.Generic.HashSet[string]]::new() } # 加入数字段,哈希集自动去重 [void]$groupStructure[$env][$type].Add($num) } # 3. 拼接生成最终嵌套格式 $output = @() foreach ($envKey in $groupStructure.Keys) { $typeParts = @() foreach ($typeKey in $groupStructure[$envKey].Keys) { $numStr = $groupStructure[$envKey][$typeKey] -join '|' $typeParts += "$typeKey-($numStr)" } $typeGroupStr = $typeParts -join '|' $output += "$envKey-($typeGroupStr)" } # 输出结果(可直接打印或写入文件) $output | Out-File -Path "你的输出文件路径.txt" -Encoding utf8
代码说明
- 读取与过滤:按行读取文件,跳过格式不符合要求的内容,避免干扰结果。
- 分组去重:用嵌套哈希表+哈希集的结构,确保相同类型下的数字段不会重复。
- 格式拼接:从最内层的数字集合开始,用
|连接后包裹括号,逐层向外拼接成完整的嵌套格式。
示例验证
若输入文件内容为:
environment-type1-01-x environment-type1-01-x environment-type2-01-x environment-type3-01-x environment-type3-02-x environment-type3-11-x
运行代码后会输出:
environment-(type1-(01)|type2-(01)|type3-(01|02|11))
内容的提问来源于stack exchange,提问作者Kiya
相关产品推荐
相关产品推荐

