You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:24:56